teaset icon indicating copy to clipboard operation
teaset copied to clipboard

和react-native-router-flux并用会出现路由重置的问题

Open zi6xuan opened this issue 5 years ago • 3 comments

react-native:0.59.2
react:16.8.3
teaset:0.6.3
react-native-router-flux:4.0.6

问题基本锁定在和react版本有关系,似乎大于16.0.0的版本以后一直有这个问题,以下是例子代码,进入画面3后,弹出对话框,点击对话框按钮,正确的情况下应该是对话框关闭,但是实际情况是关闭对话框的同时导致路由重置到了画面1 ~~RN059.zip<-这个是例子代码~~ RN059-20190401.zip<-最新demo

zi6xuan avatar Mar 29 '19 09:03 zi6xuan

目前始终无法确定是不是rnrf并用导致的问题,~~但是发现可能是悬浮层在移除的时候出现了冲突,在悬浮层代码回掉函数内有很大概率出现重置路由的问题(猜测是内存泄漏)~~ 在回掉函数内增加延时代码基本能解决问题,~~不知道是否可以在重要的涉及到浮动层组件回掉函数增加延时调用~~如下:

onAction(){   
setTimeout(() => {
      xxxxxxx
    }, 1);
}

经测试,在组件内会掉prop.func之前增加setTimeout并不能规避此问题,而是必须在外面增加setTimeout包裹,才能解决

zi6xuan avatar Apr 01 '19 09:04 zi6xuan

最新发现,最近又出现Select组件onSelect回调导致react-native-router-flux路由重置,最新发现的解决方法如下,供参考

onSelected={(item, index) => {
             setTimeout(() => {
              this.setState({ sex: item.id });
           }, 1);
 }} 

具体原因我暂时没有去细究

zi6xuan avatar Sep 13 '19 01:09 zi6xuan

+1 使用react hooks 进行setstate时会重置reload,其他操作不会引起问题

onlyU-uaena avatar Mar 28 '20 16:03 onlyU-uaena