useRef、useMemo、useCallbackの違い
useMemoとuseCallbackはhookであり、反応器のレンダリング性能を最適化するために使用されます.関数型素子は関数のみで、jsxの関数を返します. レンダリング要素とは、その関数を呼び出すことによって実行されるものである.関数を実行するたびに内部で宣言される エレメントは、自身の状態が変化した場合や親から入手したアイテムが変化した場合に再レンダリングされます. useRef
userefを使用する必要がある場合フォーカス管理、テキスト選択領域またはメディア再生時 直接動画実行時 サードパーティ製DOMライブラリをreactとともに使用する場合
=>userefはDOMにアクセスする必要がある場合に使用されます. DOMを指し、宣言 userefの使用により、RefがDOMにアクセスできるようになり、Refオブジェクトの現在の使用を希望するDOMを示す.また、使用 CASE:特定の場合に実行しなければならない関数が、コンポーネントのレンダリング条件に従って継続的に実行される場合、 useMemoはdepsが変更される前に値を記憶してもよいし、実行後に値を保存する役割としてもよい. 複雑な関数の戻り値を記憶することはuserefとは異なる. userefは記憶用 CASE:useMemoが特定の値を再利用するためである場合、useCallbackは特定の関数を再利用するためである. サブエレメントに関数をpropsとして提供する場合は、必ずuseCallbackを使用して再レンダリングを防止してください.
표현식(변수, 또 다른 함수 등)도 매번 다시 선언되어 사용된다.
(하위 컴포넌트에 최적화 설정을 해주지 않으면 부모에게서 받는 props가 변경되지 않았더라도 리렌더링 되는것이 기본이다.)
userefを使用する必要がある場合
=>userefはDOMにアクセスする必要がある場合に使用されます.
const value = useRef();
ラベルに入れるref={value}
該当するDOMを指定できます.value.current.focus()
해당 DOM으로 focus를 시킬 수 있다.
const id = useRef(1);
id.current = N; // N은 임의의 정수
// ref안의 값은 수정이 되어도 렌더링이 되지 않는다. 그러므로 렌더링이 되지 않는 값을 관리할 때 사용한다.
useMemo메모리제이션된 값을 반환
특정 값
、usemoは記憶用복잡한 함수의 return 값
const num = useMemo(callback, deps);
useCallback메모리제이션된 함수를 반환
const func1 = useCallback(callback, deps);
Reference
この問題について(useRef、useMemo、useCallbackの違い), 我々は、より多くの情報をここで見つけました https://velog.io/@ragnarok_code/프로젝트-정리-useRef-useMemo-useCallback의-차이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol