ReactフックのuseEffectは継続的に永久に実行されます/無限ループ

ヤンシュン・テイ:

私は新しいReact HooksuseEffectAPIを試してみましたが、無限ループで永久に実行し続けているようです!コールバックをuseEffect1回だけ実行したいこれが参照用の私のコードです:

「Run code snippet」をクリックして、「Run useEffect」文字列がコンソールに無限に出力されることを確認します。

function Counter() {
  const [count, setCount] = React.useState(0);

  React.useEffect(() => {
    console.log('Run useEffect');
    setCount(100);
  });

  return (
    <div>
      <p>Count: {count}</p>
    </div>
  );
}

ReactDOM.render(<Counter />, document.querySelector('#app'));
<script src="https://unpkg.com/[email protected]/umd/react.development.js"></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js"></script>

<div id="app"></div>

ヤンシュン・テイ:

これuseEffectは、レンダリングのたびにトリガーされるために発生します。これは、Counter()ステートレス機能コンポーネントのこの場合の関数の呼び出しです。あなたがやるときsetXから返されたコールuseStateuseEffect、再びそのコンポーネントをレンダリングします反応し、useEffect再び実行を。これにより、無限ループが発生します。

Counter()useEffect()setCount()Counter()useEffect()→...(ループ)

あなたの作るためにuseEffect一度だけ実行し、空の配列を渡す[]以下の改訂スニペットに見られるように、2番目の引数として。

2番目の引数の目的は、配列引数の値のいずれかが変更されたときにReactに通知することです。

useEffect(() => {
  setCount(100);
}, [count]); // Only re-run the effect if count changes

配列には任意の数の値を渡すことができuseEffect、値のいずれかが変更されたときにのみ実行されます。空の配列を渡すことで、変更を追跡せず、1回だけ実行して、効果的にシミュレーションするようにReactに指示していますcomponentDidMount

function Counter() {
  const [count, setCount] = React.useState(0);

  React.useEffect(() => {
    console.log('Run useEffect');
    setCount(100);
  }, []);

  return (
    <div>
      <p>Count: {count}</p>
    </div>
  );
}

ReactDOM.render(<Counter />, document.querySelector('#app'));
<script src="https://unpkg.com/[email protected]/umd/react.development.js"></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js"></script>

<div id="app"></div>

useEffectの詳細をご覧ください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

このループは無限に実行されますか?

分類Dev

useEffectフックは、2番目の引数が指定されている場合でも無限ループを実行しています

分類Dev

ngforループ内の関数と条件は無限に実行され続けます

分類Dev

Muleロールバック例外戦略のmaxRedeliveryAttemptsは無限に実行されます

分類Dev

Forループは永久に実行されます

分類Dev

Forループは永久に実行されます

分類Dev

tensorflowカスタムループは最初のエポックで終了せず、プログレスバーが無限に実行されます

分類Dev

Python Turtleforループが無限に実行されます

分類Dev

マクロは無限のループで実行されています

分類Dev

ファイルのアップロードは、関連する無限に実行されているスクリプトに影響を与えたり、壊れたりしますか?

分類Dev

GetFileプロセッサはApacheNiFiで継続的に実行されています

分類Dev

入力されたintに関係なく、ループは無限に実行されます

分類Dev

React useEffectフックは順番に実行されることが保証されていますか?

分類Dev

実行中のプログラムの上部にタイトルを印刷して、無限の量のデータを印刷および実行するコードで継続的に表示するにはどうすればよいですか?

分類Dev

Codeigniterのactiverecordクエリが継続的に実行されます

分類Dev

個別のファットジャーとしてデプロイされた場合、有限のデータセットを介してローカルJVMで実行されている場合、Vertxサービスはメッセージを継続的に受け入れません

分類Dev

setIntervalはAndroidのFirefoxで継続的に実行されます

分類Dev

「不明確なforループ-ループは無限に実行されます」(MSVCC6295)

分類Dev

「不明確なforループ-ループは無限に実行されます」(MSVCC6295)

分類Dev

バッチファイルが無限に実行されます

分類Dev

forループのクローン要素が壊れて永久に実行されます

分類Dev

Reactで継続的に実行されるUseEffect?

分類Dev

ファイルがターゲットディレクトリに存在しない場合にのみ、無限に実行されるバッチファイルにファイルをコピーするにはどうすればよいですか?

分類Dev

ループは、最初に呼び出されたときに1回だけ実行され、2回目は無限に実行されます

分類Dev

タスクの継続(async / awaitによって構築された)は、WPFアプリケーションのメインスレッドで実行されていますが、コンソールアプリケーションの子で実行されています

分類Dev

どのようにこのコードはuseEffectフックでリスナーなしSETSTATEフックの後に実行されていますか?

分類Dev

無限ループを引き起こすReactのuseEffectフック

分類Dev

StatsmodelsのLogit.fit_regularizedは永久に実行され続けます

分類Dev

辞書式モデルの問題-CPLEXOPL-モデルは無回答で永久に実行されています

Related 関連記事

  1. 1

    このループは無限に実行されますか?

  2. 2

    useEffectフックは、2番目の引数が指定されている場合でも無限ループを実行しています

  3. 3

    ngforループ内の関数と条件は無限に実行され続けます

  4. 4

    Muleロールバック例外戦略のmaxRedeliveryAttemptsは無限に実行されます

  5. 5

    Forループは永久に実行されます

  6. 6

    Forループは永久に実行されます

  7. 7

    tensorflowカスタムループは最初のエポックで終了せず、プログレスバーが無限に実行されます

  8. 8

    Python Turtleforループが無限に実行されます

  9. 9

    マクロは無限のループで実行されています

  10. 10

    ファイルのアップロードは、関連する無限に実行されているスクリプトに影響を与えたり、壊れたりしますか?

  11. 11

    GetFileプロセッサはApacheNiFiで継続的に実行されています

  12. 12

    入力されたintに関係なく、ループは無限に実行されます

  13. 13

    React useEffectフックは順番に実行されることが保証されていますか?

  14. 14

    実行中のプログラムの上部にタイトルを印刷して、無限の量のデータを印刷および実行するコードで継続的に表示するにはどうすればよいですか?

  15. 15

    Codeigniterのactiverecordクエリが継続的に実行されます

  16. 16

    個別のファットジャーとしてデプロイされた場合、有限のデータセットを介してローカルJVMで実行されている場合、Vertxサービスはメッセージを継続的に受け入れません

  17. 17

    setIntervalはAndroidのFirefoxで継続的に実行されます

  18. 18

    「不明確なforループ-ループは無限に実行されます」(MSVCC6295)

  19. 19

    「不明確なforループ-ループは無限に実行されます」(MSVCC6295)

  20. 20

    バッチファイルが無限に実行されます

  21. 21

    forループのクローン要素が壊れて永久に実行されます

  22. 22

    Reactで継続的に実行されるUseEffect?

  23. 23

    ファイルがターゲットディレクトリに存在しない場合にのみ、無限に実行されるバッチファイルにファイルをコピーするにはどうすればよいですか?

  24. 24

    ループは、最初に呼び出されたときに1回だけ実行され、2回目は無限に実行されます

  25. 25

    タスクの継続(async / awaitによって構築された)は、WPFアプリケーションのメインスレッドで実行されていますが、コンソールアプリケーションの子で実行されています

  26. 26

    どのようにこのコードはuseEffectフックでリスナーなしSETSTATEフックの後に実行されていますか?

  27. 27

    無限ループを引き起こすReactのuseEffectフック

  28. 28

    StatsmodelsのLogit.fit_regularizedは永久に実行され続けます

  29. 29

    辞書式モデルの問題-CPLEXOPL-モデルは無回答で永久に実行されています

ホットタグ

アーカイブ