[解決済み】React.jsの状態配列の正しい修正について
2022-04-18 08:50:24
質問
の末尾に要素を追加したい。
state
という配列がありますが、これは正しい方法でしょうか?
this.state.arrayvar.push(newelement);
this.setState({ arrayvar:this.state.arrayvar });
でインプレースで配列を変更することが心配です。
push
という問題が発生する可能性がありますが、大丈夫でしょうか?
配列のコピーを作るという選択肢と
setState
というのは無駄な気がします。
どのように解決するのか?
その Reactのドキュメント は言う。
<ブロッククオートthis.stateをimmutableであるかのように扱います。
あなたの
push
は状態を直接変更するので、たとえ後で状態をリセットしていたとしても、潜在的にエラーを起こしやすいコードを導く可能性があります。例えば、以下のようなライフサイクル・メソッドがあります。
componentDidUpdate
が発動しない。
React の次期バージョンで推奨されているのは アップデータ 関数は、競合状態を防ぐために状態を変更するときに使用します。
this.setState(prevState => ({
arrayvar: [...prevState.arrayvar, newelement]
}))
非標準の状態変更で直面する可能性のあるエラーに比べれば、メモリの無駄遣い"aste"は問題ではありません。
以前のバージョンのReactのための代替構文
を使用することができます。
concat
を使用すると、新しい配列を返すので、きれいな構文になります。
this.setState({
arrayvar: this.state.arrayvar.concat([newelement])
})
ES6 では スプレッド演算子 :
this.setState({
arrayvar: [...this.state.arrayvar, newelement]
})
関連
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】TypeError: res.status は関数ではありません。
-
[解決済み] コールバック内で正しい `this` にアクセスする方法
-
[解決済み] オブジェクトのためのマップ関数(配列の代わりに)
-
[解決済み] 配列の結合/平坦化
-
[解決済み] JavaScriptで配列を比較する方法は?
-
[解決済み] 新しい配列を作成せずに、既存のJavaScript配列を別の配列で拡張する方法
-
[解決済み] Reactのstateとpropsの違いとは?
-
[解決済み】JavaScriptで2つの配列を結合し、項目の重複を排除する方法
-
[解決済み】Grunt、NPM、Bowerの違い( package.json vs bower.json )
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: $(...).DataTable は関数ではありません。
-
[解決済み】JavaScriptのisset()に相当するもの
-
[解決済み】NodeJS "ESモジュールをロードするためにインポートを使用する必要があります。"
-
[解決済み】JavaScript "Uncaught TypeError: object is not a function" 連想性の質問
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ'state'を読み込むことはできません。
-
[解決済み】別のjsファイル内でJavaScriptの関数を呼び出す
-
[解決済み】getElementByIdはnullを返す?[クローズド]
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】 \u003C とは何ですか?
-
[解決済み】中央値の計算 - javascript