teaset icon indicating copy to clipboard operation
teaset copied to clipboard

Overlay 关闭后有可能让路由重置

Open orzhtml opened this issue 6 years ago • 11 comments

orzhtml avatar Feb 13 '19 02:02 orzhtml

react-native:0.58.0 image 刚刚升级项目到0.58.0貌似这个问题还在,似乎是生命周期问题导致的 只是在当前页面显示了一个Overlay的弹出框,然后在弹出框关闭的那一刻,也就是调用hide就会导致这个问题

zi6xuan avatar Feb 18 '19 05:02 zi6xuan

RN058.zip @rilyu 你好,我重要重现并制作出了出现问题的demo,是使用了react-native-router-flux的情况下,在当前页面显示Overlay,并且在回调事件内显示其他页面就会出现问题,不知道对解决这个bug是否有帮助

zi6xuan avatar Feb 18 '19 07:02 zi6xuan

RN058.zip @rilyu 你好,我重要重现并制作出了出现问题的demo,是使用了react-native-router-flux的情况下,在当前页面显示Overlay,并且在回调事件内显示其他页面就会出现问题,不知道对解决这个bug是否有帮助

跟你一样,不过我用的是0.6.0的teaset,问题一样存在

orzhtml avatar Feb 19 '19 02:02 orzhtml

@orzhtml 0.6.0的teaset我已经确定不和老版本兼容(react-native和react)

zi6xuan avatar Feb 20 '19 00:02 zi6xuan

@orzhtml 0.6.0的teaset我已经确定不和老版本兼容(react-native和react)

我的是 rn: 0.57.5

这个可能不重要,重要的是 关闭弹窗后,路由某种情况下会被重置

orzhtml avatar Feb 21 '19 07:02 orzhtml

@orzhtml 0.6.0的teaset我已经确定不和老版本兼容(react-native和react)

我的是 rn: 0.57.5

这个可能不重要,重要的是 关闭弹窗后,路由某种情况下会被重置

目前发现就是因为和react版本不兼容会导致重置路由,而且是特定情况下,比如我发的demo

zi6xuan avatar Feb 21 '19 07:02 zi6xuan

@orzhtml 0.6.0的teaset我已经确定不和老版本兼容(react-native和react)

我的是 rn: 0.57.5 这个可能不重要,重要的是 关闭弹窗后,路由某种情况下会被重置

目前发现就是因为和react版本不兼容会导致重置路由,而且是特定情况下,比如我发的demo

等作者他有空了查下原因吧。 我路由被重置的原因应该是弹窗出来关闭后,又变更了数据 也就是说做了 setState

orzhtml avatar Feb 21 '19 08:02 orzhtml

临时解决办法可以在hide后执行的代码中加个setTimeout 100毫秒 避免路由被重置

XHTeng avatar Mar 01 '19 03:03 XHTeng

万能的setTimeout,,救了我一命,虽然我是在show的时候出现的问题。

handsameliu avatar Jun 12 '19 11:06 handsameliu

@handsameliu shou也可以加timeout,而且,timeout只需要1毫秒即可

zi6xuan avatar Jun 13 '19 04:06 zi6xuan

测试改下Overlay的hide源码,可以解决问题

  static hide(key) {
    setTimeout(()=>{
      TopView.remove(key);
    }, 1);
  }

yz1311 avatar Aug 03 '20 03:08 yz1311