Что делать, если вы можете использовать async / await, чтобы заставить setState React

Поскольку функция setState React является асинхронной, и поэтому вы не можете получить доступ к недавно обновленному состоянию в пределах той же функции, вызывающей this.setState , каковы плюсы и минусы использования async / wait на setState, например, await this.setState({ newState });

Всего 2 ответа


ключевое слово await должно использоваться для выражения, которое возвращает Promise, и хотя setState is async, он не возвращает Promise и, следовательно, ждать не будет работать с ним. setState обеспечивает callback для отслеживания, если он завершен.

Вы бы использовали обратный вызов

this.setState({
   newState
}, () => {
    console.log(this.state.newState)
})

Here is a demo которая показывает, что setState не работает с async await


Нет никаких профи, потому что this.setState не возвращает обещание и await что это не послужит хорошей цели.

Он должен быть пролонгирован для использования с await :

const setStateAsync = updater => new Promise(resolve => this.setState(updater, resolve))

Обычно это не будет очень setState из-за того, как обычно используется setState . Если есть необходимость полагаться на ранее установленное состояние, может быть использована функция обновления.


Есть идеи?

10000