不要直接修改状态!通常,请尝试避免突变。
Array.prototype.push()变异
就地阵列。因此,从本质上讲,当您
push访问内部数组时
setState,可以使用来改变原始状态
push。由于
push返回的是新的数组长度而不是实际的数组长度,因此您将设置
this.state.userAnswers为数值,这就是为什么要
UncaughtTypeError: this.state.userAnswers.push is not afunction(…)进行第二次运行的原因,因为您不能
push输入数字。
您需要改用Array.prototype.concat()。它不会改变原始数组,并返回带有新串联元素的新数组。这就是您要在内部执行的操作
setState。您的代码应如下所示:
this.setState({ userAnswers: this.state.userAnswers.concat(this.state.value), questionNumber: this.state.questionNumber + 1}


