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()中设置了一个条件