[解決済み】状態配列にプッシュする正しい方法
2022-04-10 08:39:45
質問
データを状態配列にプッシュするのに問題があるようです。 私はこの方法でそれを達成しようとしています。
this.setState({ myArray: this.state.myArray.push('new value') })
しかし、これは間違った方法で、ミュータビリティの問題を引き起こすと私は信じています?
解決方法は?
配列のプッシュが長さを返す
this.state.myArray.push('new value')
は、配列そのものではなく、拡張された配列の長さを返します。
Array.prototype.push()
.
戻り値が配列であることを期待しているのでしょう。
不変性
むしろReactの挙動らしいです。
この後setState()を呼び出すと、このstateを直接変更しないようにしましょう。 は、あなたが行った変異を置き換えます。this.state は、あたかもそれが 不滅です。 React.Component(リアクト・コンポーネント .
という感じでしょうか(Reactに詳しくないので)。
var joined = this.state.myArray.concat('new value');
this.setState({ myArray: joined })
関連
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】ES6マップオブジェクトをソートすることは可能ですか?
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] JavaScriptで配列を比較する方法は?
-
[解決済み] 新しい配列を作成せずに、既存のJavaScript配列を別の配列で拡張する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】node.js TypeError: path must be absolute or specify root to res.sendFile [JSONのパースに失敗しました]。
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み] [Solved] Uncaught TypeError: nullのプロパティ 'appendChild' を読み取ることができない。
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】 Uncaught Reference Error: stLight is not defined (in Chrome only)
-
[解決済み】ETIMEDOUTエラーの対処方法は?
-
[解決済み】 \u003C とは何ですか?
-
[解決済み] Uncaught (in promise) TypeError: フェッチに失敗してCorsエラー