【问题标题】:when is the useEffect hook clean up function get called in react什么时候在 react 中调用 useEffect 挂钩清理函数
【发布时间】:2020-06-11 14:22:11
【问题描述】:

我想知道useEffect钩子清理函数什么时候在react中被调用,它是在依赖变化时被调用还是在组件被卸载时被调用。

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

useEffect(()=>{

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

             }  //clean up function

},[dependency])

是否会在dependency 更改时调用清理函数,或者在卸载组件时调用它。

【问题讨论】:

    标签: reactjs react-hooks use-effect


    【解决方案1】:

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

    React 究竟何时清理效果? Ref

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

    【讨论】:

    • 我想知道每次状态更改时组件是否卸载,意味着每次状态更改时组件是否重新渲染导致组件卸载并再次安装,每次渲染时是否卸载组件
    • 不,unmout 是不同的东西,re-render 是不同的东西,umount 会在组件被移除时触发,re-render 是由props 和@987654328 的变化引起的@to 只是更新 dom
    • @user8989,抱歉不知道
    【解决方案2】:

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

    组件卸载时运行清理。

    为避免出现意外错误,react 会在运行新效果之前清除效果。你可以通过这个sandbox来玩弄并掌握这个概念

    【讨论】:

    • 组件卸载时它也运行 useEffect 是什么意思,据我所知,卸载组件时只运行清理功能。
    • 我的意思是清理,我已经对帖子进行了更改。谢谢!
    猜你喜欢
    • 2020-08-08
    • 1970-01-01
    • 2020-03-05
    • 2021-07-02
    • 2022-01-07
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多