React の useEffectOnce フック

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、React において特定の条件が真になったときにコールバック関数を最大 1 回だけ実行するためにuseEffectOnceフックをどのように使用するかを学びます。これは、コンポーネントがマウントされるときやボタンがクリックされるときなど、特定のアクションを 1 回だけ実行したい場合に役立ちます。この実験が終了するとき、React アプリケーションでこのフックをどのように実装するかについて、より深い理解を得ることができます。

React useEffectOnce フック

VM 内には既にindex.htmlscript.jsが用意されています。一般的には、script.jsstyle.cssにのみコードを追加すればよいです。

以下のコードは、when条件が真になったときにcallbackを 1 回だけ実行する関数useEffectOnce(callback, when)を実装しています。

この関数を実装するには:

  • useRef()フックを使用して、エフェクトの実行状態を追跡するための変数hasRunOnceを作成します。
  • when条件が変更されたときにのみ実行されるuseEffect()フックを使用します。
  • useEffect()フックの中で、whentrueで、かつエフェクトが以前に実行されていないことを確認します。両方がtrueの場合、callbackを実行して、hasRunOncetrueに設定します。
const useEffectOnce = (callback, when) => {
  const hasRunOnce = React.useRef(false);
  React.useEffect(() => {
    if (when && !hasRunOnce.current) {
      callback();
      hasRunOnce.current = true;
    }
  }, [when]);
};

ここにuseEffectOnce()の使用例を示します:

const App = () => {
  const [clicked, setClicked] = React.useState(false);
  useEffectOnce(() => {
    console.log("mounted");
  }, clicked);
  return <button => setClicked(true)}>Click me</button>;
};

ReactDOM.createRoot(document.getElementById("root")).render(<App />);

この例では、useEffectOnce()はボタンが初めてクリックされたときにコンソールに「mounted」とログを出力するために使用されています。useEffectOnce()フックには 2 つの引数が渡されます:実行するcallbackとチェックするwhen条件です。when条件はclicked状態に設定されているため、callbackclickedが初めてtrueになったときにのみ実行されます。

右下隅の「Go Live」をクリックして、ポート 8080 でウェブサービスを実行してください。その後、Web 8080タブを更新して、ウェブページをプレビューできます。

まとめ

おめでとうございます!あなたは React useEffectOnce フックの実験を完了しました。あなたの技術を向上させるために、LabEx でさらに多くの実験を練習することができます。