Вопрос проверяет понимание работы состояния в React и способов его обновления.
Сеттер из useState может принимать либо новое значение, либо функцию-обновитель. Функция-обновитель получает предыдущее состояние и возвращает новое. Второй вариант нужен, когда новое состояние зависит от предыдущего. React сам решает, когда применить обновление.
useState возвращает текущее состояние и функцию для его обновления.
Сеттер состояния — функция, которая сообщает React, что состояние нужно обновить.
Используется, когда новое состояние не зависит от старого.
const [count, setCount] = useState(0);
setCount(5);
Используется, когда новое значение зависит от предыдущего.
setCount(prev => prev + 1);
Обновления состояния могут быть сгруппированы (batching).
Значение count внутри замыкания может быть устаревшим.
Updater-функция всегда получает актуальное состояние.
setCount(count + 1);
setCount(count + 1);
// результат может быть +1, а не +2
setCount(c => c + 1);
setCount(c => c + 1);
// гарантированно +2
Сеттер useState принимает либо значение, либо функцию, и при зависимостях от предыдущего состояния всегда нужно использовать updater-функцию.