[解決済み] ReactJSのprevStateとは何ですか?重複] [重複] [重複
2022-02-17 07:27:11
質問
私はそれが尋ねる愚かな質問かもしれないと思うが、私はreactJSの初心者であることを信じています。どなたか、なぜ prevState ReactjSで。私は理解するために懸命に試みたが、失敗しました。
以下は私のコードです。理解するために私を助けてください
state = {
placeName : '',
places : []
}
placeSubmitHanlder = () => {
if(this.state.placeName.trim()===''){
return;
}
this.setState(prevState => {
return {
places : prevState.places.concat(prevState.placeName)
};
});
};
解決方法は?
prevState
は、setStateコールバック関数に渡された引数に付けた名前です。この関数が保持するのは、コールバック関数に渡される前の状態の値です。
setState
はReactによってトリガーされました。
setState
はバッチ処理を行うので、前の状態の値に基づいて新しい状態を更新したい場合、前の状態が何であったかを知ることが重要な場合があります。
そのため、複数の setState 呼び出しが同じ状態を更新している場合、setState 呼び出しをバッチングすると、誤った状態が設定される可能性があります。例を考えてみましょう。
state = {
count: 0
}
updateCount = () => {
this.setState({ count: this.state.count + 1});
this.setState({ count: this.state.count + 1});
this.setState({ count: this.state.count + 1});
this.setState({ count: this.state.count + 1});
}
上記のコードでは、countの値が4であることを期待するかもしれませんが、実際には1になってしまいます。なぜなら、setStateの最後の呼び出しが、バッチ処理中に以前の値を上書きしてしまうからです。これを解決する方法として、functional setStateを使用する方法があります。
updateCount = () => {
this.setState(prevstate => ({ count: prevstate.count + 1}));
this.setState(prevstate => ({ count: prevstate.count + 1}));
this.setState(prevstate => ({ count: prevstate.count + 1}));
this.setState(prevstate => ({ count: prevstate.count + 1}));
}
関連
-
[解決済み】Javascript:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み】Uncaught ReferenceError: angular is not defined - AngularJSが動作しない。
-
[解決済み】JavaScriptで相対URLへのリダイレクトを行う
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] React NativeとReactの違いは何ですか?
-
[解決済み】JavaScript版sleep()とは?)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Heroku:ノードアプリで「このアプリにはデフォルトの言語が検出されませんでした」エラーがスローされる
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み】「Uncaught TypeError: Chromeで "Illegal invocation "が発生する。
-
[解決済み] エラー。モジュールhtmlが見つからない
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】リソースはドキュメントと解釈されるが、MIMEタイプはapplication/zipで転送される
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み】TypeError:res.jsonは関数ではありません。
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント