1

我有一个创建事件侦听器并显示链接列表的 React 组件。一旦用户单击链接,就会调用 componentWillUnmount 方法并显示一个新页面。我的组件在卸载后继续运行和处理事件。这可以按预期工作,因为我正在跟踪我的控件是否已安装,并根据已安装/未安装状态调用通过道具传递的函数。

一切似乎都工作正常,但我在 React 文档中读过,“componentWillUnmount() 在组件被卸载和销毁之前立即被调用”。我也知道 isMounted 是一种反模式,所以我正在跟踪控件是否是我自己安装的。我的组件被销毁只是时间问题,还是我的事件监听器阻止它被销毁?

4

2 回答 2

2

我认为您的问题的解决方案是使用像Redux这样的库。它将为您处理您的状态和操作,因此您不必担心处于未安装状态的组件。

话虽如此,这实际上是 React 中已知的内存泄漏问题。你可以在这里看到问题。

于 2017-02-18T00:04:25.350 回答
0

componentWillUnmount()设计用于处理组件的清理。这包括清理事件侦听器和计时器等。我相信正确的方法是删除此函数中的事件侦听器。

于 2019-02-05T07:30:06.033 回答