ReactでsetState(updater)
で非同期アップデータパラメータを使用することができるかどうかは知りませんか?非同期のアップデータパラメータを使用して、setStateに反応しますか?
this.setState(async (prevState) => ({
foo: await f(prevState.someData)
}))
どうやらasync
パラメータが問題です:私は(f
が呼び出されるが、UIが更新されていない)動作していない、次のコードを持っています。私はこの醜い代替バージョンを使用しなければならなかった:
this.setState(async (prevState) => {
this.setState({
foo: await f(prevState.someData)
})
})
上記のコードを書く良い方法はありますか?
D-リーパーが正しいです - 'setState()'は非常に原子的な操作でなければならず、非同期操作のための悪い場所です。メソッド呼び出しに非同期フェッチを入れます。 – Omortis
'await'はラムダ関数の中にあり、それも' async'である必要があります(typescriptコンパイラは私にエラーを与えます)ので、これは許されません。 –
@Omortis:私は通常、 'setState'からフェッチを移動します。問題は、以前の' setState'呼び出しがあるためです。フェッチのために 'this.state'を参照することはできません。私は状態にアクセスするために 'setState(func)'を使わなければなりません。 –