#javascript #reactjs #settimeout
Вопрос:
const [value, setValue] = useState(0);
const counter = () => {
setTimeout(() => {
// setValue(value 1);
setValue((prevState) => prevState 1);
}, 2000);
};
counter
вызывается при нажатии кнопки, т.е.
<button onClick={counter}>counter</button>
Почему setValue(value 1)
значение обновляется один раз, если я нажимаю кнопку несколько раз, но setValue((prevState) => prevState 1)
возвращает правильное значение относительно нажатой суммы?
Комментарии:
1. если вы попробуете <button onClick={() => setValue(value 1)}>счетчик </button>, он должен работать так, как ожидалось. Посмотрите здесь для получения дополнительной информации reactjs.org/docs/hooks-state.html#updating-state
2. Спасибо за ссылку
Ответ №1:
Обновления состояния не всегда происходят немедленно. Использование предыдущего значения гарантирует, что вы работаете с текущим значением в момент времени, когда значение устанавливается. Кент Доддс хорошо объясняет это в этом посте . Больший вопрос может быть в том, почему вы оборачиваете это в a setTimeout
?
Комментарии:
1. Спасибо. Я видел этот фрагмент в учебном
setTimeOut
пособии, который был предназначен только для демонстрации.