在MAP内部的React()中的SetState回调()



我被卡住了。听我说:

如果数组在道具中说arr=[{id:100,names:["abc","xyz"]}, {id:101,name:["def","pqr"]}];现在我的要求就是这样:

onSave = () => {
  this.state.arr.map(obj => {
    this.setState({ [obj.id]: obj.names }}
  });
  this.accessNumIds();
}

问题是当accessNumIds()在此时执行时,状态尚未更新。我不能将此功能放在setStatecallback()中,因为我只想调用一次。

有什么想法吗?

您可以先进行映射:

const state = this.props.arr.reduce((acc, e) => { 
  acc[e.id] = e.names;
  return acc;
}, {});
this.setState(state, () => this.accessNumIds()); 

您正在设置状态倍数时间,具体取决于道具的大小。我建议使用所需数据(不在Map((中(执行SetState((。如果要在componentdidupdate((。

最新更新