[解決済み] ReactのsetStateが即座に更新されない件
2023-01-07 10:55:07
質問
私はtodoアプリケーションに取り組んでいます。これは問題のあるコードの非常に単純化されたバージョンです。私はチェックボックスを持っています。
<p><input type="checkbox" name="area" checked={this.state.Pencil} onChange={this.checkPencil}/> Writing Item </p>
以下はチェックボックスを呼び出す関数です。
checkPencil(){
this.setState({
pencil:!this.state.pencil,
});
this.props.updateItem(this.state);
}
updateItemは、reduxにディスパッチするためにマッピングされた関数です。
function mapDispatchToProps(dispatch){
return bindActionCreators({ updateItem}, dispatch);
}
私の問題は、updateItemアクションを呼び出して状態をconsole.logするとき、常に1ステップ後ろになっていることです。チェックボックスがチェックされておらず、true でない場合、私はまだ updateItem 関数に渡される true の状態を取得します。状態を強制的に更新するために、別の関数を呼び出す必要がありますか?
どのように解決するのですか?
setStateは非同期で実行されるため、2番目の関数をsetStateのコールバックとして呼び出す必要があります。以下のような感じです。
this.setState({pencil:!this.state.pencil}, myFunction)
しかし、あなたの場合、その関数にパラメータを付けて呼び出したいので、もう少し工夫が必要です。おそらく、propsの関数を呼び出す独自の関数を作成する必要があるでしょう。
myFunction = () => {
this.props.updateItem(this.state)
}
これらを組み合わせれば、うまくいくはずです。
関連
-
[解決済み] ReactのsetStateで状態が更新されない
-
[解決済み] Reactルータを使ったプログラムによるナビゲーション
-
[解決済み] React JSX内のループ
-
[解決済み] Reactのこの3つの点は何をするところなのでしょうか?
-
[解決済み] setStateを呼び出さずにReactコンポーネントを強制的に再レンダリングすることは可能ですか?
-
[解決済み] Reactでネストした状態のプロパティを更新する方法
-
[解決済み] ReactのsetStateでオブジェクトを更新する
-
[解決済み] reactのsetStateメソッドを呼んでも、すぐにステートが変更されないのはなぜですか?
-
[解決済み】React:setStateを使用してstateのstate.item[1]を更新するには?
-
[解決済み] ReduxのmapToDispatchToProps()の引数で「dispatch」が関数でない件
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Reactコンポーネント内でswitchステートメントを使用するには?
-
[解決済み] React テキストを挟んだ横長の仕切りを作る
-
[解決済み] Webpack のコンパイルに失敗した
-
[解決済み] React - 予想外のトークン、予想外の;
-
[解決済み] ReactJs "インバリアント違反..." リアクトの古典的な問題
-
[解決済み] eslint: no-case-declaration - case ブロックで予期しない字句の宣言があった。
-
React はエラー TypeError を報告します。未定義のプロパティ 'XX' を読み取ることができない、問題は解決されました。
-
[解決済み] プロップ `history` は `Router` で必須とマークされているが、その値は `undefined` である。
-
[解決済み] Reactプロジェクトに.envファイルを追加する
-
[解決済み] ESLintとTSLintの違い【クローズド】について