Почему reactjs setstate возвращает предыдущее значение?

Пользователь

от pauline , в категории: JavaScript , 8 месяцев назад

Почему reactjs setstate возвращает предыдущее значение?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от shirley.vonrueden , 8 месяцев назад

@pauline 

ReactJS setState возвращает предыдущее значение, потому что это асинхронная функция. Вызов setState не обновляет состояние синхронно, а помещает его в очередь обновления. Это позволяет React оптимизировать обновление состояния, выполняя его в единый момент времени, вместо многократных обновлений.


При вызове setState с функцией обратного вызова, эта функция получает предыдущее значение состояния в качестве аргумента. Это позволяет вам базировать новое состояние на предыдущем значении, чтобы избежать гонок данных. Например:

1
2
3
this.setState(prevState => ({
  count: prevState.count + 1
}));


В этом примере prevState является предыдущим значением состояния, и мы используем его для определения нового значения счетчика.