无法更新反应组件中的状态
Can't update state in react component
我有一个组件 AddMenu
constructor(props) {
super(props);
this.state = {
menu: '',
make: '',
newCar: '',
}
this.addConfirmFuction=this.addConfirmFuction.bind(this);
}
通过更改输入文本更新菜单、品牌、型号、年份,有效。
handleChangeEvent(e) {
this.setState({
[e.target.name]: e.target.value,
});
}
然后我想将状态中的所有内容合并到状态"newcar"中
addConfirmFuction() {
let newEntered=[];
newEntered=newEntered.concat(this.state.menu);
newEntered=newEntered.concat(this.state.make);
this.setState({newCar:newEntered,});
}
在运行最后一行代码:this.setState (newCar: newEnteredCar)
之后,没有更新,还是''。我看了很多文档,想不通...我在状态构造函数中绑定了函数,我使用了setState函数,但无法提前更新state.thank你
你检查过 "make" 和 "menu" 中的状态值 "addConfirmFunction()" 是否真的不为空吗?
此外,从您的代码来看,"make" 和 "menu" 似乎只是字符串。 "newCar" 被设置为数组类型的值的任何原因?如果它不需要是数组,那么我猜 this.state.make + this.state.menu
就足够了!
编辑:
我想我遇到了问题。如果您在调用该行后立即检查状态值,那么您可能看不到新值,因为 setState
是 React 中的异步函数。 (为了提高性能)。请阅读此堆栈溢出 link。有很多文章都在谈论它。
如果您想查看新值,因为此 setState 调用渲染,请在渲染方法处保留一个断点并检查 newCar
的值是否可用。
我有一个组件 AddMenu
constructor(props) {
super(props);
this.state = {
menu: '',
make: '',
newCar: '',
}
this.addConfirmFuction=this.addConfirmFuction.bind(this);
}
通过更改输入文本更新菜单、品牌、型号、年份,有效。
handleChangeEvent(e) {
this.setState({
[e.target.name]: e.target.value,
});
}
然后我想将状态中的所有内容合并到状态"newcar"中
addConfirmFuction() {
let newEntered=[];
newEntered=newEntered.concat(this.state.menu);
newEntered=newEntered.concat(this.state.make);
this.setState({newCar:newEntered,});
}
在运行最后一行代码:this.setState (newCar: newEnteredCar)
之后,没有更新,还是''。我看了很多文档,想不通...我在状态构造函数中绑定了函数,我使用了setState函数,但无法提前更新state.thank你
你检查过 "make" 和 "menu" 中的状态值 "addConfirmFunction()" 是否真的不为空吗?
此外,从您的代码来看,"make" 和 "menu" 似乎只是字符串。 "newCar" 被设置为数组类型的值的任何原因?如果它不需要是数组,那么我猜 this.state.make + this.state.menu
就足够了!
编辑:
我想我遇到了问题。如果您在调用该行后立即检查状态值,那么您可能看不到新值,因为 setState
是 React 中的异步函数。 (为了提高性能)。请阅读此堆栈溢出 link。有很多文章都在谈论它。
如果您想查看新值,因为此 setState 调用渲染,请在渲染方法处保留一个断点并检查 newCar
的值是否可用。