this.setState()
どのコンポーネントの React 関数も非同期であるか、呼び出された関数の完了後に呼び出されることを発見しました。
今検索してこのブログを見つけました(ReactJS では setState() 状態変更操作が同期される可能性がある)
ここで彼は、setState
状態の変化がどのようにトリガーされたかに応じて、非同期 (スタックが空のときに呼び出される) または同期 (呼び出されるとすぐに呼び出される) になることを発見しました。
これら2つのことは理解しにくい
- ブログでは、
setState
関数は関数内で呼び出されますupdateState
が、updateState
関数をトリガーしたものは、呼び出された関数が認識するものではありません。 - JS はシングル スレッド言語であり、この setState は WebAPI やサーバー呼び出しではないため、JS のスレッドでのみ実行する必要があるのに、なぜ非同期にするのでしょうか
setState
。再レンダリングによってすべてのイベント リスナーなどが停止しないようにするためでしょうか、それとも他の設計上の問題があるのでしょうか。
ベストアンサー1
状態値が更新された後に関数を呼び出すことができます。
this.setState({foo: 'bar'}, () => {
// Do something here.
});
また、一度に更新する状態が多数ある場合は、すべてを同じ 内にグループ化しますsetState
。
の代わりに:
this.setState({foo: "one"}, () => {
this.setState({bar: "two"});
});
次のようにしてください:
this.setState({
foo: "one",
bar: "two"
});