【问题标题】:Exactly when happense React state update on an unmounted component WARNING?究竟是什么时候在未安装的组件上发生 React 状态更新警告?
【发布时间】:2019-11-03 09:25:29
【问题描述】:

我们应该在什么时候检查组件是否已安装??? 我有很多setState 电话,我遇到了一些时间与我在标题中写的warning

现在我可以通过在 componentDidMount 中将 variableinitializing 声明为 true 并将 分配 声明为 false 来避免这种情况在componentWillUnmount 上,然后检查setState 何时被调用。

但我的确切问题是,是否有必要在每次setState 调用时检查,或者此警告发生在特定情况下?我应该在那个时候检查变量

这个警告也会影响性能吗?

【问题讨论】:

  • 理论上,从组件加载数据并将状态设置为响应的一部分的任何地方都有可能在此过程中卸载组件。我不确定性能问题,但是让组件在“不应该”不再存在时仍在尝试更新是潜在的内存泄漏,进行检查并不是一个坏主意
  • 谢谢,我只是不想在每次通话中检查它,因为如果有很多if condition then every if`可能需要一些时间。

标签: javascript reactjs react-native react-hooks


【解决方案1】:

当您异步调用 setState 时可能会发生这种情况,例如window.fetch().then(...setState...) 或 await 或在回调中。

您可以使用this.isMounted() 代替您的自定义变量,但另请参阅https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html 以获得更好的解决方案。

【讨论】:

    猜你喜欢
    • 2020-01-27
    • 2020-12-20
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2021-03-27
    • 2019-09-11
    • 2021-08-07
    相关资源
    最近更新 更多