USENTフック



何が反応フックですか?
反応フックは、機能的なコンポーネントの状態とライフサイクルメソッドを使用できる組み込み関数です.

フックの規則useから始まる

  • は、常に機能/コンポーネント本体の中で、または、別のフック
  • の中で起動されなければならない
  • 使用中のコンポーネントは大文字でなければなりません
  • ループ、条件、または入れ子になった関数
  • のフックを呼び出しません

    USENT基本useStateは、状態を機能的なコンポーネントに加えるのを可能にします.
    これは、値(初期状態)を取ることができます(配列、オブジェクト、文字列、Booleanなど)、現在の状態と状態を更新する関数からなる配列を返します.

    One important thing to remember is the update function doesn't update the state right away.


    import React, { useState } from "react";
    
    const App = () => {
      const [value, setValue] = useState(0);
      return (
        <div className="App">
          <h1>Counter: {value}</h1>
          <button>Increment</button>
        </div>
      );
    };
    export default App;
    

    状態の更新
  • ボタンをクリックするたびにカウンターを更新しましょう
  • import React, { useState } from "react";
    
    const App = () => {
      const [value, setValue] = useState(0)
      return (
        <div className="App">
          <h1>Counter: {value}</h1>
          <button onClick={(() => setValue(value + 1))}>
            Increment
          </button>
        </div>
      );
    }
    export default App;
    

    クリックした後、しばらくインクリメントを遅延させる
    import React, { useState } from "react";
    
    const App = () => {
      const [value, setValue] = useState(0)
    
      const complexIncrease = () => {
        setTimeout(() => {
          setValue(value + 1)
        }, 2000)
      }
      return (
        <div className="App">
          <h1>Counter: {value}</h1>
          <button onClick={(() => setValue(value + 1))}>
            Increment
          </button>
          <button onClick={complexIncrease}>
            Complex Increase
          </button>
        </div>
      );
    }
    export default App;
    
  • は、上記のgotchaです.あなたが連続的に複雑な増加をクリックするならば、あなたが何回クリックしたとしても、値が一度だけ変わると気がつくかもしれません.
  • これを修正する
  • 、USENTの機能的な更新を使用してください

    機能的な更新
    useState((previousstate)  {
    
    // Always return something
    // change previous state
    
    return new state
    
    })
    
  • 新しい状態が前の状態を使用して計算された場合、関数をUSENTに渡すことができます.この関数は前の値を受け取り、
  • import React, { useState } from "react";
    
    const App = () => {
      const [value, setValue] = useState(0)
    
      const complexIncrease = () => {
        setTimeout(() => {
          setValue((prev) => prev + 1)
        }, 2000)
      }
      return (
        <div className="App">
          <h1>Counter: {value}</h1>
          <button onClick={(() => setValue(value + 1))}>
            Increment
          </button>
          <button onClick={complexIncrease}>
            Complex Increase
          </button>
        </div>
      );
    }
    export default App;
    
    現在、カウンタは完全に働きます.🤟🏻 上記のコードのsandboxリンクはこちらです.