useEffect

发布时间 2023-06-20 15:11:25作者: 随漫人

任何會產生 side Effect 的行為都應該 Effect Hook 裡執行。他和 componentDidMountcomponentDidUpdate,與 componentWillUnmount 有著同樣的宗旨,但整合進一個單一的 API

接收两个参数(回调函数和可选参数)(第二个参数性能优化)

副作用操作,模拟生命周期

订阅、请求、定时器的发送与解绑

可以在一个组件中定义多个,按照定义顺序进行执行

不加第二个参数,初次渲染和state发生改变时都会调用,所以在初次渲染执行函数中,切勿setState,不然就是死循环调用。初次--->state改变---->调用----->state改变----->调用

 useEffect 有兩個參數,第一個參數是 Effect function,第二個則是 depandancy array。 根據不同 depandancy 決定何時要執行 Effect function

after every render

記得是 after rendering 才會執行,若你想要 before rendering 執行基本上是辦不到的 [延伸閱讀: React Hook to Run Code After Render]

useEffect(() => {
// run after every rendering
console.log('render')
})

state/props change

1 useEffect(() => {
2     // When title or name changed will render
3     console.log('render')
4 }, [title, name])

cleanup

useEffect(() => {
   return () => {
       // Cleanup whatever we did last time
   }
}, [])