使用法の点でuseMutationEffect
とuseLayoutEffect
の違いは何ですか?
私はオンラインで利用可能なすべての資料を読みました(ただしこれに限定されません)
useEffect
と他の2つのフックの違いは明らかです。しかし、useMutationEffect
とuseLayoutEffect
の違いはまだ明らかではありません。
実行の順序は次のとおりです。
まず、理解する必要があります レンダリングのさまざまなフェーズ
ユーザーに表示されるDOMミューテーションは、ユーザーが視覚的な不整合を認識しないように、次のペイントの前に同期的に起動する必要があります。この特定のケースでは、useMutationEffect
またはuseLayoutEffect
のいずれかを使用して、視覚的な更新のブロックを実行する必要があります。これら2つの違いは、DOMからレイアウトを読み取る場合はuseLayoutEffect
を使用する必要があることだけです。それ以外の場合は、useMutationEffect
を使用する必要があります。
レイアウトフェーズの前、つまりReactがDOMミューテーションを実行するのと同じフェーズ中に同期的に起動します。これを使用して、DOM測定/レイアウトの読み取りを行わずにカスタムDOMミューテーションのブロックを実行します。
すべてのDOMミューテーションの後、ペイントフェーズの前に同期的に起動します。これを使用して、DOMからレイアウト(スタイルまたはレイアウト情報)を読み取り、レイアウトに基づいてカスタムDOMミューテーションのブロックを実行します。
レンダリングが画面にコミットされた後、つまりレイアウトとペイントのフェーズの後に実行されます。視覚的な更新のブロックを回避するために、可能な限りこれを使用してください
更新:useMutationEffectフックは フックAPI から https://github.com/facebook/反応/プル/ 14336 。 (クレジット: Dhaval Patel )