Skip to content

useEffect 的陷阱

https://zhuanlan.zhihu.com/p/84697185

https://zhuanlan.zhihu.com/p/366145115

https://overreacted.io/zh-hans/a-complete-guide-to-useeffect/

https://juejin.cn/post/7046358484610187277

我应该把函数当做effect的依赖吗?

  • 一般建议把不依赖props和state的函数提到你的组件外面,并且把那些仅被effect使用的函数放到effect里面。
  • 如果这样做了以后,你的effect还是需要用到组件内的函数(包括通过props传进来的函数),可以在定义它们的地方用useCallback包一层。为什么要这样做呢?因为这些函数可以访问到props和state,因此它们会参与到数据流中。

https://reactjs.org/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies

plain
function Example({ someProp }) {
  useEffect(() => {
    function doSomething() {
      console.log(someProp);
    }

    doSomething();
  }, [someProp]); // ✅ OK (our effect only uses `someProp`)
}

更新: 2023-07-17 19:06:10
原文: https://www.yuque.com/u3641/dxlfpu/mt7eh3