Вопрос №55439 от пользователя Николай Ахметянов в уроке «Автоматное программирование», курс «JS: React»
Здравствуйте! Объясните пожалуйста эту строчку
this.setState(({ opened }) => ({ opened: !opened }));
Я не понимаю, что мы в функцию передаем ({ opened }) => ({ opened: !opened })
- что это за запись такая
Да, я тоже это не понял!
Я просто в constructor прописал if else чтобы проверять на undefined.
this.state = props.opened === undefined ? {opened: true} : {opened: props.opened }
Можете мне обьяснить чем такой подход лучше ?
Николай Ахметянов, в setState можно передать либо объект, либо функцию. Если передать функцию, эта функция будет вывана с текущим state и результат вызова этой функции перезапишет state. Эту строчку можно переписать следующим образом:
this.setState((state) => {
const { opened } = state;
const newState = { opened: !opened };
return newState;
});
Возможно, вас смутил синтаксис destructuring assignment в параметрах функции. В теле функции просто сокращённый синтаксис возврата. Поскольку возвращается объект, то его необходимо взять в круглые скобки, иначе интерпретатор не поймёт, для чего у вас фигурные скобки - для объекта или для тела функции.
Roman Makarov, да это меня и смутило
Поскольку возвращается объект, то его необходимо взять в круглые скобки, иначе интерпретатор не поймёт, для чего у вас фигурные скобки - для объекта или для тела функции.
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







