6

私はこれを持っています

const CompA = () => {
  let _input;
  return (
    <input ref={el => _input = el} type="text" />
  );
}

この

const CompB = () => {
  const _input = useRef(null);
  return (
    <input ref={_input} type="text" />
  );
}

Two_inputinputタグの ref オブジェクトで、それらの違いがわかりません。

私の質問は次のとおりです。2つの違いは何ですか。_inputどちら_inputが優れていますか?

4

2 に答える 2

2

ドキュメントから:

これが機能するのは、useRef() がプレーンな JavaScript オブジェクトを作成するためです。useRef() と {current: ...} オブジェクトを自分で作成することの唯一の違いは、useRef がすべてのレンダリングで同じ ref オブジェクトを提供することです。

つまり、useRefprops または state を変更することにより、すべてのレンダリング/更新で参照を保持します。一方、シンプルなref変数はコンポーネントサイクルごとに消去されます。

于 2019-06-12T00:48:49.130 に答える