navigator 切换特别快的时候,之前的fetch数据callback出现了setState(...): Can only update a mounted or mounting component.



  • 如题,比如第一个组件发出了一个fetch请求,然后我立马切换到了下一个组件,一会儿第一个组件的那个response过来了,出现了setState(...): Can only update a mounted or mounting component.的warning。不知道有没有哪个大神能够有好的解决方案?:relaxed:



  • 在组件里fetch跟着setState的话就会出现这样的问题啰,临时的解决方案是在componentWillUnmount的时候做一个标记(要做在this上,不要做在state里,譬如this._isUnmounted = true)然后在fetch返回 setState之前判断一下标记。

    更优雅的解决方案就是使用redux-thunk去执行异步逻辑并将结果写入store,这样如果节点被unmount了也就不会收到通知了。

    另外,经验上这个warning一般不会导致其它衍生错误,并且在release里不会有warning提示(包括log),所以也可以选择暂时无视。



  • 谢谢。懂啦,暂时项目还有用redux呢,第一个方案解决了问题。确实没啥影响,就是新版本的提示总是底部黄黄的一片。--所以解决掉这个warning,强迫症==



  • @tdzl2003
    :+1:



  • https://github.com/reactnativecn/react-safe-promise

    做了一个组件解决这个问题。



  • @tdzl2003 :+1: 简直不能再给力了!


登录后回复