Javascript 使用setState()后仍然存在mutate state属性错误

Javascript 使用setState()后仍然存在mutate state属性错误,javascript,reactjs,Javascript,Reactjs,在我没有使用setState()之前,很明显会出现“不直接改变状态”错误。但是,尽管在更正代码后,我在控制台中得到了相同的错误,尽管应用程序运行良好并提供了预期的输出。您以错误的方式设置了状态this.state.nonegthali++这里您仍然在修改状态 尝试设置状态,如this.setState({nonegthali:this.state.nonegthali+1})第一件事就是你设置状态的方式不对。 第二,您正在使用++直接增加状态值,这是不正确的 setState是一个异步函数,它接

在我没有使用setState()之前,很明显会出现“不直接改变状态”错误。但是,尽管在更正代码后,我在控制台中得到了相同的错误,尽管应用程序运行良好并提供了预期的输出。

您以错误的方式设置了状态
this.state.nonegthali++
这里您仍然在修改状态


尝试设置状态,如
this.setState({nonegthali:this.state.nonegthali+1})

第一件事就是你设置状态的方式不对。 第二,您正在使用++直接增加状态值,这是不正确的

setState是一个异步函数,它接受一个对象,但您只将值作为参数传递,这是不正确的

使用prevState增加值。请检查以下更新的简化解决方案

  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++});
    }

可能是《谢谢你》的翻版,我自己也发现了。再次感谢@HemadriDasari,祝您愉快。
   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);
}