Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置状态不';不能在onSubmit函数中工作_Javascript_Reactjs_State_Setstate - Fatal编程技术网

Javascript 设置状态不';不能在onSubmit函数中工作

Javascript 设置状态不';不能在onSubmit函数中工作,javascript,reactjs,state,setstate,Javascript,Reactjs,State,Setstate,在此组件中,setState()在启动异步onSubmit函数后不工作 构造函数(道具){ 超级(道具); 此.state={ addingProduct:错误 } this.onSubmit=this.onSubmit.bind(this); } 异步onSubmit(formData){ const{addProductToServer}=this.props; this.setState({addingProduct:true}); 等待addProductToServer(formDat

在此组件中,
setState()
在启动异步onSubmit函数后不工作

构造函数(道具){
超级(道具);
此.state={
addingProduct:错误
}
this.onSubmit=this.onSubmit.bind(this);
}
异步onSubmit(formData){
const{addProductToServer}=this.props;
this.setState({addingProduct:true});
等待addProductToServer(formData);
//这不会将状态设置为false
this.setState({addingProduct:false})
}

我认为在函数中分解道具不是一个好主意,函数应该包含在render方法中。这是我试图模拟你试图做的事情

import React, { Component } from "react";

const name = "Mathew";
export default class StackOverflow extends Component {
constructor(props) {
 super(props);
 this.state = {
   addingProduct: false,
   server: []
 };
 this.addProductToServer = this.addProductToServer.bind(this);
 this.onSubmit = this.onSubmit.bind(this);
}

addProductToServer(data) {
 return this.state.server.push(data);
}
async onSubmit(formData) {
 this.setState({ addingProduct: true });
 await this.addProductToServer(formData);
 this.setState({ addingProduct: false });
}

render() {
 // const { addProductToServer } = this.props
 console.log("server", this.state.server);
 console.log("addingProduct", this.state.addingProduct)
 
 return (
   <div>
     <h3>Hello StackOverflow</h3>
     <p>{this.state.server.map((item, index) => (
       <li key = {index}>{item}</li>
     ))}</p>
     <button onClick={() => this.onSubmit(name)} type="submit">
       Submit
     </button>
   </div>
 );
}
}
import React,{Component}来自“React”;
const name=“Mathew”;
导出默认类StackOverflow扩展组件{
建造师(道具){
超级(道具);
此.state={
addingProduct:false,
服务器:[]
};
this.addProductToServer=this.addProductToServer.bind(this);
this.onSubmit=this.onSubmit.bind(this);
}
addProductToServer(数据){
返回此.state.server.push(数据);
}
异步onSubmit(formData){
this.setState({addingProduct:true});
等待此消息。addProductToServer(formData);
this.setState({addingProduct:false});
}
render(){
//const{addProductToServer}=this.props
log(“server”,this.state.server);
console.log(“addingProduct”,this.state.addingProduct)
返回(
你好,StackOverflow
{this.state.server.map((项,索引)=>(
  • {item}
  • ))}

    this.onSubmit(name)}type=“submit”> 提交 ); } }

    这很有效。这就是a

    中的内容,请您解释一下期望值,并详细说明它是如何不起作用的?非常感谢。我在render()中设置了一个条件