react navigation返回到任意页面(不集成redux)

来源:互联网 发布:ubuntu ssh 重装 编辑:程序博客网 时间:2024/05/22 16:55

react navigation默认是使用key作为goback的参数进行返回的,这个key是一个动态生成的,而不是我们定义的routeName。 
网上也有很多方法有的说更改源码,有的说是集成redux。更改源码的方式我也尝试过但是如果开启滑动返回属性,很容易就卡死。集成redux是一个不错的方式,但对于新手来说redux的模式还是太过于复杂,况且redux的强大在于数据流的控制,仅仅一个因为一个返回就去学一个这么大的框架,也太耗时了。 
今天我们不借助任何第三方框架,不修改源码,也是可以做到,返回任意界面的。 
假如A ->B ->C ->D->E 顺序入栈,我们可以在navigate的时候将本页面的key作为参数,传递个先一个页面,这样下一个页面就拥有之前页面的key了,就可以完成返回。 
A ->B{A.key} ->C {A.key,B.key}->D{A.key,B.key,C.key}->E{A.key,B.key,C.key,D.key} 
但是这里有个问题,这种会导致key有一个错位,就是说如果你想从E页面返回到A. 
你要goback(params.keys.B); 
如果只是返回一层还是使用goback(); 
处理错位问题 我们只需要将key的名字改成上一个页面的名字就可以了。 
代码如下:

  this.props.navigation.navigate('B',{keys:{ A_key:this.props.navigation.state.key,}});
  • 1

这样就可以直接使用A_key 返回A页面了

  this.props.navigation.navigate('C',{            data:rowData,            keys:{...this.props.navigation.state.params.keys,B_key:this.props.navigation.state.key}            })
  • 1
  • 2
  • 3
  • 4
 this.props.navigation.goBack(this.props.navigation.state.params.keys. A_key y)
  • 1

参考:https://stackoverflow.com/questions/45489343/react-navigation-back-and-goback-not-working

阅读全文
0 0