if (this.state.foody === "THALI" && this.state.cat === "NONVEG") {
this.setState({ nonvegthali: this.state.nonvegthali++});
} else if (this.state.foody === "THALI" && this.state.cat === "VEG") {
this.setState({ vegthali: this.state.vegthali++ });
} else if (this.state.foody === "SNACK" && this.state.cat === "VEG") {
this.setState({ vegsnack: this.state.vegsnack++ });
} else if (this.state.foody === "SNACK" && this.state.cat === "NONVEG") {
this.setState({ nonvegsnack: this.state.nonvegsnack++});
}
在我不使用setState()之前,很明显会出现“不直接改变状态”错误。但是,尽管在纠正了代码之后,尽管应用程序运行良好并提供了预期的输出,但是在控制台中我仍然遇到相同的错误。
答案 0 :(得分:0)
您以错误的方式设置状态。 this.state.nonvegthali++
在这里,您仍在改变状态。
尝试设置this.setState({nonvegthali: this.state.nonvegthali + 1});
之类的状态
答案 1 :(得分:0)
您做setState的第一件事是不对的。 其次是使用不正确的++直接增加状态值。
setState是一个异步函数,它接受一个对象,但是您仅将值作为参数传递,这是不正确的
使用prevState增加值。请检查以下更新的简化解决方案
const { foody, cat } = this.state;
if (foody === "THALI" && cat === "NONVEG") {
this.setState(prevState => ({nonvegthali: prevState.nonvegthali +1);
} else if (foody === "THALI" && cat === "VEG") {
this.setState(prevState => ({vegthali: prevState.vegthali +1);
} else if (foody === "SNACK" && cat === "VEG") {
this.setState(prevState => ({vegsnack: prevState.vegsnack+1);
} else if (foody === "SNACk" && cat === "NONVEG") {
this.setState(prevState => ({nonvegsnack: prevState.nonvegsnack+1);
}
答案 2 :(得分:-1)
您不能直接更改状态。所有操作都应通过setState()函数进行。
this.setState(this.state.nonvegthali + 1);
这是直接改变状态。
this.state.nonvegthali++