Ошибка: setState (...): принимает объект переменных состояния для обновления или функцию, которая возвращает объект переменных состояния - PullRequest
1 голос
/ 03 февраля 2020

Это дает мне ошибку в остальной части this.state.incorrect + 1 и this.state.correct + 1

Я видел это, но не решаю свою проблему React Native: setState (...): принимает объект состояния переменные для обновления или функция, которая возвращает объект переменных состояния

if (choice == this.state.dataset[this.state.current].correct) {
            this.setState(this.state.correct + 1)
        } else {
            this.setState(this.state.incorrect + 1)
        }

Ответы [ 2 ]

2 голосов
/ 03 февраля 2020

вам нужно обновить состояние, так как определенное вами состояние является объектом. И вам нужно указать, какое свойство объекта вы обновляете, как показано ниже.

if (choice == this.state.dataset[this.state.current].correct) {
            this.setState({correct: this.state.correct + 1})
        } else {
            this.setState({incorrect: this.state.incorrect + 1})
        }

Do c ref

Обновление

Поскольку @titus обновляется в комментариях правильно, как показано ниже, так как реакция дает объект prevState, который имеет prev State компонента.

this.setState(prevState => ({correct: prevState.correct + 1}))
1 голос
/ 03 февраля 2020

В реакции setState принимает объект или асин * c функцию. Вы не используете ни один из них. В вашем случае, если вам нужно обновить значение состояния, вам нужно использовать

this.setState({correct: this.state.correct + 1});

Также будьте осторожны при использовании этого способа установки значения состояния, поскольку setState является асинхронной операцией c, и вы will может не гарантировать немедленное получение значения переменной состояния. Если вы хотите использовать значение setState(), используйте asyn c callback с setState

  this.setState({correct: this.state.correct + 1}, function() {
     // you get the new value of state immediately at this callback
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...