reactjs - 除非从显示中删除同一组件的所有实例,否则不会调用 componentWillUnmount。是预期的吗?
问题描述
当我们创建了相同反应组件的多个实例时,不会调用 componentWillUnmount 除非所有实例都从显示中删除。是预期的吗?
解决方案
我发现了这个问题。在我的例子中,我们有一个容器,它根据数组的内容显示组件。
数组中的索引用作组件的键。数组中的元素会根据网络通信进行更改。
所以最初创建一个特定类型的组件,键为 0。当我们从网络接收到通信时,我们从数组中删除上述类型并添加一个新类型。
当渲染被调用时,组件被重新创建,但新类型和键是相同的 0。
由于先前和新创建的组件的键是相同的 0,因此不会调用 componentDidMount 和 componentWillUnmount 方法。
一旦我将键从索引更改为组件的类型,问题就解决了。将来可能会帮助遇到类似问题的任何人。
谢谢
推荐阅读
- asp.net - 我在哪里可以找到带有内置身份验证的 Asp.net 核心 MVC 的所有逻辑?
- sendgrid - 我们可以为不同环境(如测试、阶段和生产)的 sendgrid webhook 设置单独的 URL
- python - 如何从 csv 数据中删除“kg”和“m”?
- c# - Unity - 使用脚本在画布中使用填充图像的问题
- python - 用于 Cron 实现的 Python 脚本中的 NameError
- docker - docker 容器网络将一个容器中的本地主机连接到另一个容器
- javascript - 必须刷新页面才能从 api 获取数据
- git - 为什么 GIT 不跟踪目录的新文件?
- angular - Angular 预建主题不适用于 Angular8 库
- python - 创建函数以查找 3 个值中的最大值的代码问题