在设置每个单独循环的状态之后,如何在foreach循环中设置状态



设置状态后,试图在每个单独的循环之后回到函数。但是回调将与最新状态执行两次,而不是两个州。

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

最新更新