警告:setState(...):只能更新已安装或安装的组件。有计时器

时间:2017-11-15 16:13:23

标签: reactjs

POST

为什么这个错误会继续显示?当我从我的应用程序注销时,此警告开始出现在控制台上。有人可以解释为什么会这样吗?

Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. Please check the code for the Clock component.

2 个答案:

答案 0 :(得分:1)

我之前遇到过类似的问题。在我的情况下发生了什么,我正确地取消了间隔,但有时会在再次调用该函数后取消它。我需要的是一种了解组件是否仍然安装的方法。不幸的是,React没有暴露组件安装状态(或至少不容易)。所以我最终自己跟踪挂载状态,然后在调用我的间隔函数时检查组件是否仍然挂载。

{{1}}

答案 1 :(得分:1)

无需将tickId存储在州内。

componentDidMount: function() {
    this.tickId = setInterval(this.tick, 1000);
},

componentWillUnmount: function() {
    clearInterval(this.tickId);
}