首页 > 解决方案 > 我们如何、何时以及为什么在 react JavaScript 中清理我们的组件?

问题描述

我知道我们需要清理 React 中的组件以防止内存泄漏(也许还有其他原因)。我也了解如何使用comonentWillUnmount(不再使用)和useEffect钩子。然而我的问题是我们清理我们的组件是什么,以及为什么(真的是为什么)。我想要一个详细的答案,因为我在理解这个概念时遇到了问题。

标签: javascriptreactjsreact-hooks

解决方案


你通常根本不需要。

对于大多数组件,只需更改状态然后不渲染它们就可以轻松卸载它们。

但是,如果你做了任何不会被清理的事情,你必须自己清理它。这意味着标准 React 生命周期之外的东西:

  • 事件侦听器需要不受约束(即在滚动页面时侦听以做一些花哨onScroll的事情)window
  • 取消订阅在该组件实例化时打开的数据订阅。(即在打开的网络套接字上侦听新的聊天室消息)
  • 取消不再需要的超时或间隔。(即每秒更新一次时钟)

这不是一个详尽的列表,但其想法是,如果您在组件的生命周期中执行任何使用某些 props 渲染组件的操作,您可能应该在卸载组件时撤消该操作。


推荐阅读