[解決済み] reactのsetStateメソッドを呼んでも、すぐにステートが変更されないのはなぜですか?
2022-03-23 12:43:05
質問
今読んでいる本
フォーム
のセクションは
reactjs
のドキュメントを読んで、次のコードを試してみました。
onChange
使用法 (
JSBIN
).
var React= require('react');
var ControlledForm= React.createClass({
getInitialState: function() {
return {
value: "initial value"
};
},
handleChange: function(event) {
console.log(this.state.value);
this.setState({value: event.target.value});
console.log(this.state.value);
},
render: function() {
return (
<input type="text" value={this.state.value} onChange={this.handleChange}/>
);
}
});
React.render(
<ControlledForm/>,
document.getElementById('mount')
);
を更新すると
<input/>
の値は、ブラウザ上で2番目の
console.log
の中にある
handleChange
コールバックは同じ
value
最初の
console.log
の結果が表示されないのはなぜですか?
this.setState({value: event.target.value})
のスコープで
handleChange
をコールバックするのですか?
解決方法は?
Reactの ドキュメント :
setState()
はすぐに変異しないthis.state
を作成しますが の状態遷移を保留する。アクセスするthis.state
を呼び出した後、この メソッドは既存の値を返す可能性があります。また の呼び出しが同期的に動作することを保証するものではありません。setState
と呼ばれることがあります。 は、パフォーマンス向上のためにバッチ処理されます。
状態変化が発生した後に実行される関数が必要な場合は、コールバックとして渡します。
this.setState({value: event.target.value}, function () {
console.log(this.state.value);
});
関連
-
vue3レスポンシブ対応のためのsetup+ref+reactive
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み] setStateを呼び出さずにReactコンポーネントを強制的に再レンダリングすることは可能ですか?
-
[解決済み] Reactのstateとpropsの違いとは?
-
[解決済み] Reactで親の状態を更新するにはどうしたらいいですか?
-
[解決済み】React:setStateを使用してstateのstate.item[1]を更新するには?
-
[解決済み】setStateの更新が終了した後に関数を実行することはできますか?
-
[解決済み] setStateはすぐに状態を更新しない
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
vueネットワークリクエストソリューション ネイティブネットワークリクエストとjsネットワークリクエストライブラリ
-
JavaScriptのクロージャの説明
-
vueの補間表現とv-textディレクティブの違いについて
-
vueにおけるv-forループオブジェクトのプロパティ
-
Vueでルートネスティングを実装する例
-
Vueの一般的な組み込みディレクティブの説明
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
[解決済み】ExpressJS - throw er Unhandled errorイベント