什么时候在反应中调用useEffect挂钩清理函数

时间:2020-06-11 05:12:51

标签: reactjs react-hooks use-effect

我想知道useEffect钩子清理函数何时在react中被调用,它是在依赖项更改时被调用还是在组件卸载时被调用。

例如在我的组件中,如果我有useEffect

useEffect(()=>{

  return ()=>{ 
             //clean up function code

             }  //clean up function

},[dependency])

将在dependency上调用清除函数,或者在卸载组件时调用它。

2 个答案:

答案 0 :(得分:3)

当您通过dependency时,它将清除所有情况(卸载和更改依赖项):

React何时能准确清除效果? Ref

React在组件卸载时执行清理。但是,正如我们 早先了解到,效果会为每个渲染运行,而不仅仅是一次。这个 这就是为什么React还会在之前清除之前渲染中的效果 下次运行效果。

答案 1 :(得分:0)

只需添加@Vivek Doshi答案。 useEffect是componentDidMountcomponentDidUpdatecomponentWillUnmount组合的同义词。该效果将在第一次渲染时运行,所有后续的渲染都将重新渲染(除非提供了条件)。

在卸载组件时运行清理。

为避免意外的错误,在运行新效果之前,react将清除效果。您可以使用此sandbox

玩转并掌握概念