开发者社区> 问答> 正文

#REact 为什么是isMounted()反模式,正确的解决方案是什么?

#REact 为什么是isMounted()反模式,正确的解决方案是什么?

展开
收起
因为相信,所以看见。 2020-05-07 18:15:26 1029 0
1 条回答
写回答
取消 提交回答
  • 阿里,我所有的向往

    主要的用例isMounted()是避免setState()在组件卸载后调用,因为它会发出警告。

    if (this.isMounted()) {
      this.setState({...})
    }
    

    isMounted()在呼叫之前进行检查setState()确实可以消除警告,但同时也违反了警告的目的。使用isMounted()是一种代码味道,因为您要检查的唯一原因是因为您认为在卸载组件后可能持有引用。

    最佳解决方案是在setState()卸载组件后找到可能要调用的位置并进行修复。当组件正在等待某些数据并在数据到达之前将其卸载时,此类情况通常是由于回调而发生的。理想情况下,componentWillUnmount()卸载前应在中取消所有回调。

    2020-05-07 18:16:01
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
利用编译将 Vue 组件转成 React 组件 立即下载
React Native 全量化实践 立即下载
React在大型后台管理项目中的工程实践 立即下载