首页 > 解决方案 > React 清理功能,有什么问题?

问题描述

关于 react with useEffect 帮助的官方文档清理功能应该只调用一次并且在组件被销毁之前。 在此处输入图像描述

因此,关于这些信息,我制作了一个组件并放置了一些代码,例如让它成为下一个

useEffect(() => {
  console.log('didmount')
  return () => {
    console.log('will unmount2')
  }
})

我希望看到几个 didmount 控制台,这取决于我要更改它的道具的次数,并且在我更改路线之前只有一个“将 mount2”,因此组件将被销毁,但实际结果是下一个在此处输入图像描述

我刚刚错过了什么?

标签: reactjsuse-effect

解决方案


您没有理解或完全阅读文档。

此外,如果一个组件多次渲染(通常是这样),则在执行下一个效果之前会清除前一个效果。在我们的示例中,这意味着每次更新都会创建一个新订阅。

更改道具会导致组件重新渲染。这反过来会导致执行清理功能。

对于您的示例,这意味着您应该在控制台中看到服务器didmountwill unmount2具体取决于组件重新渲染的次数。


推荐阅读