useEffect【異步】
基本上90%的情況下,都應該用這個,這個是在render結束后,你的callback函數執行,但是不會block browser painting,算是某種異步的方式吧,但是class的componentDidMount 和componentDidUpdate是同步的,在render結束后就運行,useEffect在大部分場景下都比class的方式性能更好.
useLayoutEffect【同步】
這個是用在處理DOM的時候,當你的useEffect里面的操作需要處理DOM,並且會改變頁面的樣式,就需要用這個,否則可能會出現出現閃屏問題, useLayoutEffect里面的callback函數會在DOM更新完成后立即執行,但是會在瀏覽器進行任何繪制之前運行完成,阻塞了瀏覽器的繪制.