reactjs の setState が Sync ではなく Async なのはなぜですか? 質問する

reactjs の setState が Sync ではなく Async なのはなぜですか? 質問する

this.setState()どのコンポーネントの React 関数も非同期であるか、呼び出された関数の完了後に呼び出されることを発見しました。

今検索してこのブログを見つけました(ReactJS では setState() 状態変更操作が同期される可能性がある

ここで彼は、setState状態の変化がどのようにトリガーされたかに応じて、非同期 (スタックが空のときに呼び出される) または同期 (呼び出されるとすぐに呼び出される) になることを発見しました。

これら2つのことは理解しにくい

  1. ブログでは、setState関数は関数内で呼び出されますupdateStateが、updateState関数をトリガーしたものは、呼び出された関数が認識するものではありません。
  2. 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"
});

おすすめ記事