javascript - 我们如何、何时以及为什么在 react JavaScript 中清理我们的组件?
问题描述
我知道我们需要清理 React 中的组件以防止内存泄漏(也许还有其他原因)。我也了解如何使用comonentWillUnmount
(不再使用)和useEffect
钩子。然而我的问题是我们清理我们的组件是什么,以及为什么(真的是为什么)。我想要一个详细的答案,因为我在理解这个概念时遇到了问题。
解决方案
你通常根本不需要。
对于大多数组件,只需更改状态然后不渲染它们就可以轻松卸载它们。
但是,如果你做了任何不会被清理的事情,你必须自己清理它。这意味着标准 React 生命周期之外的东西:
- 事件侦听器需要不受约束(即在滚动页面时侦听以做一些花哨
onScroll
的事情)window
- 取消订阅在该组件实例化时打开的数据订阅。(即在打开的网络套接字上侦听新的聊天室消息)
- 取消不再需要的超时或间隔。(即每秒更新一次时钟)
这不是一个详尽的列表,但其想法是,如果您在组件的生命周期中执行任何不使用某些 props 渲染组件的操作,您可能应该在卸载组件时撤消该操作。
推荐阅读
- sqlite - 如何使用 Expo 从 React Native 中的 DocumentPicker 打开 SQLite 数据库
- python - 如何获取有关 Python 意外 SIGABRT 的更多信息?
- powerbi - 如何使用 dax 函数 USERPRINCIPALNAME 匹配来自表的电子邮件并让用户在 PowerBI 中可视化报表?
- git - git 如何在不丢失任何其他提交的情况下将较旧的提交移到头部
- python - 这个错误代码告诉我什么?即我需要修复什么
- ubuntu - LXD container ALSA audio support question
- archive - EDI 文件在清除之前必须存档多长时间
- reactjs - React.JS TypeError: Cannot read property 'value' of undefined
- jolt - Group results in Jolt
- julia - Parallel operations over arrays in Julia