vs .ユーザ名



長い間反応しているユーザは、createrefとuseref refsの向こう側に一般的な反応データフローを避けて、DOM要素または反応成分にアクセスしなければなりませんでした.最初に、これらの2つは、それらの各々がどのように機能するかについてより詳しく見るとき、同様の機能を提供します.しかし、これはそうではありません.createrefとuserefの間の混乱を取り除くために、これらの2つの違いに重点を置いてください.
最初に、彼らの違いに深く行く前に、どのように、そして、どこでrefsが反応で使われることができるかを知ることは重要です.
特に反応において、refsはpropとコンポーネント状態の代わりに直接反応コンポーネントまたはDOM要素にアクセスするためにエスケープインセンティブを提供する.しかしながら、これは、その状態を置き換えることなく、反応コンポーネントまたはDOM要素に関連付けられた値を変更する機会を与えてくれます.前進すると、createrefとuserefの違いになります.
createEfとuserEFの間の最大の違いは、クラスコンポーネントとuserEF関数内の内部でCreaterEFを使用することをお勧めします.問題は、我々は他の方法ラウンドを使用することができますか?以下に例を示す.
function TextInput () {
    const textInput = createRef()

    const focusOnInput = () => {
        textInput.current.focus()
    }

    return (
        <div>
            <input ref={textInput} type="text" />
            <button onClick={focusOnInput}>Focus on text input</button>
        </div>
    )
}
上の例では、createGefを使用すると、Userefを使用する際に、特定の違いがありません.このような状況において入力を集中させる必要な目標を達成した.
しかしながら、以下のvaluecomponent関数の中で異なる状況のためにuserefの代わりにcreaterefを使用するかどうかはどうですか?
function ValueComponent () {
    const valueComponent = createRef(10)

    const changeValue = () => {
       valueComponent.current += 1
    }


    return (
        <div>
            <div ref={valueComponent}>Value: {valueComponent.current}</div>
            <button onClick={changeValue}>Change Value</button>
        </div>
    )
}
ここでは、関数の内部のコンポーネントを使用して、まだ取得できます.今の質問はrefに格納された値を変更した後に要素をレンダリングするとどうなりますか?
function ValueComponent () {
    const valueComponent = React.createRef(10)
    const {state, setState} = React.useState()


    return (
        <div>
            <div ref={valueComponent}>Value: {valueComponent.current}</div>
            <button onClick={() => (valueComponent.current = 2, setState({}))}>Change Value</button>
        </div>
    )
}
ボタンをクリックすると、divの中の値を10の初期値から2に変更することを期待します.ただし、表示される値は2ではなく10である.なぜそうですか.
関数コンポーネントが再レンダリングされると、通常の関数のように動作し、関数ロジック内の完全な内容を実行します.この場合、コンポーネントの現在の値は、ボタンをクリックしたときに2に変わりますが、コンポーネントが再レンダリングされると、再び10に変わります.表示値は予想通り変化しないことは明らかである.
さらに、クラスコンポーネントを再レンダリングするには、コンポーネントのrender ()関数を呼び出すだけです.関数補完の性質を考えると、同じアスペクトでcreaterefを使用できないと言うのは安全です.また、userefを利用しなければなりません.
しかしながら、Userefは関数コンポーネントが再描画されるたびに値を再起動しません.代入として、コンポーネントの寿命を通して格納された値を永続化します.
function ValueComponent () {
    const valueComponent = React.useRef(10)
    const {state, setState} = React.useState()


    return (
        <div>
            <div ref={valueComponent}>Value: {valueComponent.current}</div>
            <button onClick={() => (valueComponent.current = 2, setState({}))}>Change Value</button>
        </div>
    )
}
ボタンをクリックすると、値は2に変わります.
要約すると、フロントエンド開発のために反応を使用するプロセスでは、典型的なデータフローからDOM要素に直接アクセスして、コンポーネントを反応させなければならない状況があります.我々は、この理由のためにcreaterefとuseref APIの使用をします.
それにもかかわらず、2つは、ほとんど同じ時に動作しますが、2つの間にはまだ大きな違いがあります:createrefクラスクラスのコンポーネント内で使用する必要があります.これを念頭に置いて、1つのプログラムを使用することができます1つのプログラムのいずれかを選択することなく、今後の議論を選択します.
場合は、ネイティブの反応に興味がある場合は、このクールなモバイルテンプレートをチェックアウトすることができますQuick Component . これらのモバイルテンプレートは、生産の準備も目的の学習に適しています.
その他
Dating app Whatsapp clone その他