Вопрос №55439 от пользователя Николай Ахметянов в уроке «Автоматное программирование», курс «JS: React»

Николай Ахметянов

Здравствуйте! Объясните пожалуйста эту строчку this.setState(({ opened }) => ({ opened: !opened })); Я не понимаю, что мы в функцию передаем ({ opened }) => ({ opened: !opened }) - что это за запись такая

3 0

Merey

Да, я тоже это не понял! Я просто в constructor прописал if else чтобы проверять на undefined. this.state = props.opened === undefined ? {opened: true} : {opened: props.opened } Можете мне обьяснить чем такой подход лучше ?

0

Roman Makarov

Николай Ахметянов, в setState можно передать либо объект, либо функцию. Если передать функцию, эта функция будет вывана с текущим state и результат вызова этой функции перезапишет state. Эту строчку можно переписать следующим образом:

this.setState((state) => {
  const { opened } = state;
  const newState = { opened: !opened };
  return newState;
});

Возможно, вас смутил синтаксис destructuring assignment в параметрах функции. В теле функции просто сокращённый синтаксис возврата. Поскольку возвращается объект, то его необходимо взять в круглые скобки, иначе интерпретатор не поймёт, для чего у вас фигурные скобки - для объекта или для тела функции.

0

Николай Ахметянов

Roman Makarov, да это меня и смутило

Поскольку возвращается объект, то его необходимо взять в круглые скобки, иначе интерпретатор не поймёт, для чего у вас фигурные скобки - для объекта или для тела функции.

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
1 июня 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
1 июня 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
1 июня 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
1 июня 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
1 июня 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
1 июня 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
1 июня 5 месяцев