繁体   English   中英

在map()中的React中setState的回调

[英]Callback for setState in React inside map()

我被困住了。 听我说:

如果数组在道具内说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()正在执行,但状态尚未更新。 而且我不能将此函数放在setState callback() ,因为我希望此函数仅调用一次。

有任何想法吗?

您可以先进行映射:

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

您将根据道具的大小设置状态的倍数。 我建议对期望的数据执行一次setState()(而不是在map()内部)。 如果要在重新渲染后执行accessNumIds(),请在componentDidUpdate()中执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM