USELOWOUTTEFECT : USEの違いと使用方法
2494 ワード
私は、人々のalotが反応で
useEffect
とuseLayoutEffect
フックの違いを知らないと気がつきました.useLayoutEffect
のユースケースを見つけるのはとても難しい仕事のようです.それにまっすぐに飛び込んで、このフックが本当にすべてであるものを見ましょう、彼らの違い(s)とそれらを使うとき.
効果
useEffect
機能コンポーネントから副作用を実行できます.UseEffectsが呼び出されたとき、反応はDOMに変更された後にのみあなたの副作用を表示することを知っていますデフォルトでは、アクションは最初のレンディングを含むすべてのレンダリング後の効果を実行します.これは、コンポーネントがレンダリングされた後にのみ
useEffect
が行われるということです.しかし、あなたがあなたの副作用がDOM突然変異の後、同期的に火をつける必要があるならば、それは、これまでにどんなちらつきまたは視覚的な一貫性にでも気づかないユーザーのない次のブラウザー塗料の前に、あなたは
useLayoutEffect
を使う必要があります国際交流基金
useLayoutEffect
はDOM突然変異の後、同期して、ブラウザーの前に新しい変化をペンキにするでしょう.このフックは、すべてのDOM要素のスクロール高さ、スクロール幅、スクロール位置、その他のスタイルのようなDOM測定を行うのに特に便利です.コード例を作りましょう
useEffect(()=>{
console.log("I will run second instead of first")
});
useLayoutEffect(()=>{
console.log("I will run first")
})
JavaScriptスクリプトは、単一スレッドプログラミング言語です.言うまでもなく、それは上から下まで走ります.しかし、あなたがコンソールをチェックするならば、ここで、「私は最初に走らせます」、すなわち、useLayoutEffect
が走る前に、useEffect
が実際に実行されます.これは、DOMが突然変異された後、ブラウザが新しい変更を塗る前に、useLayoutEffect
が同期的に発射されるからです.さて、どのように動作するかをよりよく理解するために、変更に気付きたいです.
useRef
反応フックでDOM要素を参照しましょう、そして、我々が話していた2つの副作用フックで若干の変化をしましょうimport React, {useRef, useEffect, useLayoutEffect) from 'react'
const App = () => {
const inputRef = useRef(null)
useEffect(()=>{
inputRef.current.value = "another user"
});
useLayoutEffect(()=>{
console.log(inputRef.current.value)
});
return(
<div>
<input type="text" value="EmmanuelTheCoder" ref=
{inputRef}/>
</div>
);
}
export default App;
コンポーネントがレンダリングされると、入力値は“別のユーザー”になりますが、コンソールは“emmanuelthecoder”と言います.ブラウザが「別のユーザ」をペイントする前に、USELAyouteffectはDOM突然変異の後に同期して既に発火しました
あなたがそれを得たことを願っています.
ちょっと待って、もう一つ!
反応18は
useEffect
フックにいくつかの本当に良い更新をもたらした.Reply 18から起動すると、UseEffectsに渡された関数は、レイアウトやペイントの前に同期して発火し、クリックのような離散的なユーザー入力の結果である場合、または更新されたときに更新されます.この動作により、イベントシステムによって、または呼び出し元によってその結果が観測されます.
あなたが反応18について知らないIncaseについて、私は詳細にそれを詳細に説明するこのブログの記事を出すでしょう、加えて、新しく加えられたフック.
読書ありがとう.
Reference
この問題について(USELOWOUTTEFECT : USEの違いと使用方法), 我々は、より多くの情報をここで見つけました https://dev.to/emmanuelthecoder/useeffect-vs-uselayouteffect-the-difference-and-when-to-use-them-124cテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol