设置状态后,试图在每个单独的循环之后回到函数。但是回调将与最新状态执行两次,而不是两个州。
onAddClick = () => {
this.state.tempAddList.forEach((id) => {
console.log("add", id);
this.setState({modInfo: {...this.state.modInfo, modId: id}},()=>this.addModifier());
});
};
addModifier = () => {
console.log(this.state.modInfo);
EdmApi.insertModifier(this.state.modInfo)
.then(res => console.log(res))
.catch(err => console.log(err));
};
this.state
不应与 setState
一起使用,因为状态更新是异步的。这可能会导致种族状况,这是这里的问题。
这是更新程序功能的目的:
this.state.tempAddList.forEach((id) => {
this.setState(
state => ({modInfo: {...state.modInfo, modId: id}}),
()=>this.addModifier())
;
});