React - setState в краткой форме

Вы можете написать

    let firstNameValid = this.state.firstNameValid;

    firstNameValid = value.length >= 1; 

    this.setState({ firstNameValid, firstNameValid,}) 

как краткий синтаксис

this.setState({ firstNameValid})  

Я пробовал приведенный выше код, похоже, он работает нормально. Просто интересно, будет ли у него какой-нибудь побочный эффект?

this.setState({ firstNameValid }) - это просто сахар для this.setState({ firstNameValid: firstNameValid }). Никаких побочных эффектов.
Tholle 13.07.2018 16:05

хорошо, я вижу. Благодарность!!!

user21 13.07.2018 16:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
4
2
2 191
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

если вы имеете в виду, что вы пишете

this.setState({foo: foo})

и теперь вы используете this.setState({ foo })

нет разницы.

Но setState, скорее всего, будет иметь побочный эффект, во-первых, потому что он асинхронный, а во-вторых, потому что вы меняете состояние всего компонента и вызываете рендеринг.

Между прочим, этот короткий способ назначения объектов - это функция JS, не имеющая отношения к реакции.

react использует ES2015 (с webpack и babel).

setState принимает параметры, которые являются объектами.

В ES2015 { a : a } такой же, как { a } (сокращенная запись объекта).

Итак, x = { a : a, b : b ...} такой же, как x = { a, b ..} Таким образом, ваш код абсолютно действителен и не будет иметь никаких побочных эффектов.

Ответ принят как подходящий

this.setState({ firstNameValid }) - это просто сахар для this.setState({ firstNameValid: firstNameValid }). Никаких побочных эффектов.

Они называются shorthand property names, и вы можете узнать о них больше здесь.

Другие вопросы по теме