Вопрос №55942 от пользователя Вадим Белинович в уроке «Автоматное программирование», курс «JS: React»
handleToggle = (e) => {
e.preventDefault();
this.setState(({ opened }) => ({ opened: !opened }));
}
можно ли описать setState вот так - this.setState({ opened: !opened });
Вадим Белинович, в случаях, когда новое состояние основывается на предыдущем, нужно использовать колбек-форму setState. Подробнее об этом в документации.
В уроке чуть ранее про Состояние приводятся два примера
this.setState({ count: count + 1 });
this.setState({ primary: !primary });
тут без коллбеков. Это правильно?
this.setState({ submittingState: 'submitted' });
- а это из следующего упражнения
Вадим Белинович, в целях упрощения колбек-форма не рассматривается в уроке. В приведённых примерах изменение состояния единичное в каждом из обработчиков, поэтому их просто не с чем батчить (т.е. откладывать рендеринг до выполнения всех вызовов setState). Подробнее о механизме батчинга можно почитать тут.
this.setState({ submittingState: 'submitted' });
- а это из следующего упражнения
это нормально, колбек-форма setState используется тогда, когда изменение состояния основывается на предыдущем состоянии.
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







