博客 / 詳情

返回

useLayoutEffect

何時使用useEffect:

  • 副作用與DOM無關:例如,數據獲取、設置訂閲、手動更改瀏覽器的URL等。
  • 不需要立即同步讀取或更改DOM:如果你不關心可能的微小布局跳動或閃爍,那麼useEffect就足夠了。
  • 性能考慮:useEffect通常對性能影響較小,因為它不會阻塞瀏覽器渲染。

何時使用useLayoutEffect:

  • 需要同步讀取或更改DOM:例如,你需要讀取元素的大小或位置並在渲染前進行調整。
  • 防止閃爍:在某些情況下,異步的useEffect可能會導致可見的佈局跳動或閃爍。例如,動畫的啓動或某些可見的快速DOM更改。
  • 模擬生命週期方法:如果你正在將舊的類組件遷移到功能組件,並需要模擬 componentDidMount、componentDidUpdate和componentWillUnmount的同步行為。

使用注意事項:

  • 避免過度使用useLayoutEffect,因為它是同步的,可能會影響應用的性能。只有當你確實需要同步的DOM操作時才使用它。
  • 如果代碼在服務器端渲染(SSR)中出現問題,考慮回退到useEffect。useLayoutEffect在服務器端渲染時不會運行,可能會引發警告或錯誤。
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.