Реакция: изменение состояния с ++

Я продолжаю получать предупреждение «не изменять» при использовании SetState с «++» (например, this.state.counter ++), которое я не получаю, когда устанавливаю его с «+1». Почему это происходит?

состояние следует изменять только с помощью setState. Поскольку вы пытаетесь установить состояние, вы можете использовать присвоение переменной, чтобы получить предыдущее значение, чтобы изменить его: let {counter} = this.state; this.setState({ counter: counter++ }) Помните, что ++ будет увеличивать значение только после завершения операции, что стоит рассмотреть, если вы столкнетесь с другим ошибки приращения

Ariel Salem 30.10.2018 15:31

Я получил ошибку при ИСПОЛЬЗОВАНИИ SetState.

user10564511 30.10.2018 16:35

это потому, что вы должны использовать setState, а не SetState. Что говорила ошибка?

Ariel Salem 30.10.2018 17:25

@EternalDoubter, не могли бы вы опубликовать свой пример кода, где вы получили это предупреждение?

c-chavez 30.10.2018 17:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
4
65
1

Ответы 1

Выражение this.state.counter++ увеличивает this.state.counter и возвращает увеличенное значение. Выражение this.state.counter + 1 возвращает только увеличенное значение. Чтобы избежать других коллизий, не следует устанавливать новое состояние на основе this.state. Вместо этого используйте этот код:

this.setState(old => ({counter: old.counter + 1}))

Проверить https://reactjs.org/docs/react-component.html#setstate

Спасибо. Я получил предупреждение, используя этот синтаксис.

user10564511 30.10.2018 14:16

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