ホームページ >ウェブフロントエンド >jsチュートリアル >最初のレンダリング時にのみ関数をトリガーするように useEffect フックを最適化する方法

最初のレンダリング時にのみ関数をトリガーするように useEffect フックを最適化する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-17 22:02:02962ブラウズ

How to Optimize useEffect Hook to Trigger a Function Only on Initial Render?

最適化された useEffect フック: 初期化関数を 1 回だけ呼び出す

React の useEffect フックを使用すると、コンポーネントの props または state の変更に応じてカスタム関数を実行できます。ただし、特定のシナリオでは、初期レンダリング時にのみ関数を呼び出して、レガシーのComponentDidMount ライフサイクル メソッドの動作をシミュレートすることが望まれます。

次のクラスベースのコンポーネントについて考えてみましょう:

<code class="javascript">class MyComponent extends React.PureComponent {
    componentDidMount() {
        loadDataOnlyOnce();
    }
    render() { ... }
}</code>

フックを使用する関数ベースのコンポーネントでは、これは次のように変換できます:

<code class="javascript">function MyComponent() {
    useEffect(() => {
        loadDataOnlyOnce(); // This will fire on every change
    }, [...???]);
    return (...);
}</code>

関数が 1 回だけ呼び出されるようにするには、useEffect:

<code class="javascript">function MyComponent() {
  useEffect(() => {
    loadDataOnlyOnce();
  }, []);

  return <div> {/* ... */} </div>;
}</code>
空の配列を指定すると、useEffect は最初のレンダリング フェーズの後にのみ起動され、不必要な再レンダリングを行わずにコンポーネントを効率的に初期化できます。

以上が最初のレンダリング時にのみ関数をトリガーするように useEffect フックを最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。