[React] useEffect vs useLayoutEffect
4592 ワード
useEffect
hookを使うだけで、useLayoutEffect
hookがわかり、違いを記録したいと思います.2つのhookはスクリーンをレンダリングするときに実行されます.これは同じです.しかし、いくつかの違いもあります.
1)
useEffect
画面は、レイアウトとレイアウトが終了した後に実行されます.次はコードです
function app() {
const [count, setCount] = useState(0);
useEffect(() => {
setCount(25);
},[]);
return(
<div>{count}</div>
)
}
上記のコードは、スクリーンレンダリング時にcount state
を25に変更してレンダリングされます.しかし、画面をリフレッシュすると、表示されたcount値はinitialState
で、0であり、すぐに25になります.->スクリーンをレンダリングする場合は、まずcount
state
をinitialState
に変換し、レイアウトと図面を完了してから、state
を設定した25に変換します.ではuseLayoutEffectはどのように機能しますか?
2)
useLayoutEffect
画面は、レイアウトと図面を描く前に最初に実行されます.次はコードです
function app() {
const [count, setCount] = useState(0);
useLayoutEffect(() => {
setCount(25);
},[]);
return(
<div>{count}</div>
)
}
useEffect
を使った時とあまり変わらないように見えます.しかし、useLayoutEffect
の使用はuseEffect
の使用とは異なり、count state
はinitialState
ではなくsetCount
に設定されており、最初からこの点が見られる.したがって、画面をレンダリングするときにステータス値に非常に依存する場合は、
useEffect
を使用するよりも、useLayoutEffect
を使用すると、目的の結果が得られる可能性があります.Reference
この問題について([React] useEffect vs useLayoutEffect), 我々は、より多くの情報をここで見つけました https://velog.io/@growing_dev/React-useEffect-vs-useLayoutEffectテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol