首页 > 解决方案 > 除非从显示中删除同一组件的所有实例,否则不会调用 componentWillUnmount。是预期的吗?

问题描述

当我们创建了相同反应组件的多个实例时,不会调用 componentWillUnmount 除非所有实例都从显示中删除。是预期的吗?

标签: reactjslifecycle

解决方案


我发现了这个问题。在我的例子中,我们有一个容器,它根据数组的内容显示组件。

数组中的索引用作组件的键。数组中的元素会根据网络通信进行更改。

所以最初创建一个特定类型的组件,键为 0。当我们从网络接收到通信时,我们从数组中删除上述类型并添加一个新类型。

当渲染被调用时,组件被重新创建,但新类型和键是相同的 0。

由于先前和新创建的组件的键是相同的 0,因此不会调用 componentDidMount 和 componentWillUnmount 方法。

一旦我将键从索引更改为组件的类型,问题就解决了。将来可能会帮助遇到类似问题的任何人。

谢谢


推荐阅读