React-报错Warning:setState(...)on anunmounted component

1、缘由

        这种错误通常出如今react组件已经从DOM中移除。咱们在react组件中发送一些异步请求的时候,就可能会出现这样的问题。举个例子,咱们在componentWillMount中发送异步请求,当请求成功返回数据,咱们调用setState改变组件的状态。可是当请求到达以前,咱们更换了页面或者移除了组件,就会报这个错误。这是由于虽然组件已经被移除,可是请求还在执行,因此会报setState() on anunmounted component的错误。

2、解决思路

    思路很简单,咱们只要在react组件被移除以前终止setState操做就能够了。

3、样例解决

    (1)定时器,在WillUnmount的时候把按期关闭。
      
   (2)处理ajax的时候,这里以jquery为例
      
    (3)低版本的react和ES5环境下
        利用isMounted(),不建议用isMounted,isMounted在通话前检查setState确实消除了警告,但也违反了警告的目的,由于如今你永远不会获得警告(即便你应该!)并且ES6上isMounted已经被禁止使用。
           
    (4)ES6环境下,推荐使用
           
  (5)fetch请求的处理
        为了让Promise能够被取消,咱们处理的思路是这样的,咱们在咱们的Promise外面再包裹一层Promise来保证咱们的Promise能够被取消。   
         
        如今咱们就能够用makeCancelable来取消咱们的fetch请求了。
         
相关文章
相关标签/搜索