[解決済み] useEffectの無限ループ
2022-04-24 16:17:47
質問
React 16.7-alphaの新しいフックシステムで遊んでいるのですが、扱う状態がオブジェクトまたは配列の場合、useEffectで無限ループに陥ってしまいます。
まず、useStateを使用して、このように空のオブジェクトで開始します。
const [obj, setObj] = useState({});
そして、useEffectで、setObjを使って、再び空のオブジェクトに設定しています。第二引数として、[obj]を渡しています。 内容 のオブジェクトは変更されていません。しかし、更新され続けている。コンテンツに関係なく、これらは常に異なるオブジェクトであるため、Reactはそれが変化し続けると思っているのでしょうか?
useEffect(() => {
setIngredients({});
}, [ingredients]);
配列の場合も同様ですが、プリミティブなのでさすがにループにはまることはありません。
この新しいフックを使って、コンテンツが変更されたかどうかをチェックする場合、オブジェクトや配列をどのように扱えばいいのでしょうか?
どのように解決するのですか?
useEffectの第2引数に空の配列を渡すと、マウントとアンマウント時のみ実行されるようになり、無限ループが発生しなくなります。
useEffect(() => {
setIngredients({});
}, []);
のReactフックに関するブログ記事で、このことが明らかにされました。 https://www.robinwieruch.de/react-hooks/
関連
-
[解決済み] React.createElement: type is invalid -- expected a string.
-
[解決済み] ReactJS giving error Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
[解決済み] React-Router 4 キャッチオールルート
-
[解決済み] ReactjsのEsLintの "react / jsx-props-no-spreading "エラーを無効化する。
-
[解決済み] React - _this2.SetStateは関数ではありません。
-
[解決済み] Uncaught (in promise) Error: リクエストに失敗、ステータスコード404
-
[解決済み] React TypeScriptで作業しているときに、Jestが予期しないトークンに遭遇した
-
[解決済み] nginxでcertbotを使用する際の問題点
-
[解決済み] React JSX内のループ
-
[解決済み] useEffect React Hook使用時の依存性欠如の警告を修正する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ngrokがReact devサーバーに接続しようとすると、無効なホストヘッダが表示される。
-
[解決済み】プリセットファイルはオブジェクトのエクスポートができない
-
[解決済み] React.createElement: type is invalid -- expected a string.
-
[解決済み] マテリアルUIセレクトフィールドのマルチセレクト
-
[解決済み] SVGサークル内の画像にボーダーを追加する方法
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] react nativeで関数だらけのヘルパーファイルを作成する方法は?
-
[解決済み] reactstrapのドロップダウンで選択されたアイテムを設定する方法は?
-
[解決済み] React JSXのforEach()でHTMLが出力されない
-
[解決済み] リアクトのシャローコンパールはどのように機能するのか