В документах React есть много мест, где говорится, что React может поставить в очередь серию изменений состояния и сделать их все один раз позже.
Документация по компонентам React
setState () ставит в очередь изменения состояния компонента и сообщает React, что этот компонент и его дочерние элементы необходимо повторно визуализировать с обновленным состоянием.Это основной метод, который используется для обновления пользовательского интерфейса в ответ на обработчики событий и ответы сервера.
Думайте о setState () как о запросе, а не как о немедленной команде для обновления компонента.Для лучшего восприятия производительности React может задержать ее, а затем обновить несколько компонентов за один проход.React не гарантирует, что изменения состояния будут применены немедленно.
setState () не всегда сразу обновляет компонент.Это может пакетировать или отложить обновление до позже.Это делает чтение this.state сразу после вызова setState () потенциальной ловушкой.Вместо этого используйте componentDidUpdate или обратный вызов setState (setState (Updater, callback)), который гарантированно сработает после применения обновления.Если вам нужно установить состояние на основе предыдущего состояния, прочтите об аргументе средства обновления ниже.
Справочник по API React Hooks
Basic Hooks - useState
const [state, setState] = useState(initialState);
Возвращает значение с состоянием и функцию для его обновления.
Во время первоначального рендеринга возвращается состояние (состояние) совпадает со значением, переданным в качестве первого аргумента (initialState).
Функция setState используется для обновления состояния.Он принимает новое значение состояния и ставит в очередь повторную визуализацию компонента.
ВОПРОС 1
Мой вопрос: независимоСколько обновлений состояний React решает поставить в очередь для выполнения в одном пакете, могу ли я рассчитывать на тот факт, что следующий рендер будет использовать самое текущее состояние со всеми обновлениями, которые были поставлены в очередь с момента последнего рендеринга?
ВОПРОС 2
Могу ли я рассчитывать на порядок изменений состояния, которые React решает поставить в очередь?Я имею в виду, если я setState({a:1})
, а затем setState({a:2})
, могу ли я быть уверен, что окончательное значение моего состояния будет 2
?