好的,所以我很沮丧地找到合适的解决方案,所以我在这里发布问题。给出答案对我有很大的帮助,因为我被卡住了!
状态树看起来像这样
this.state = {
itemList : [{
_id : 1234,
description : 'This the description',
amount : 100
}, {
_id : 1234,
description : 'This the description',
amount : 100
}],
}
问题是:
答案 0 :(得分:10)
this.setState(prevState => ({
itemList: prevState.itemList.map(
obj => (obj._id === 1234 ? Object.assign(obj, { description: "New Description" }) : obj)
)
}));
这是使用setState和prevstate更新数据结构中对象的某个属性的方法。
答案 1 :(得分:0)
要更新像这样构造的状态,你必须找到要更新的元素的索引,复制数组并更改找到的索引。
如果将记录列表保留为对象,将id作为键并记录为值,则更容易,更易读。
答案 2 :(得分:-2)
执行此操作的唯一方法是复制itemList,修改它,并将状态设置为它。
update() {
let itemList = this.state.itemList.slice();
//update it
this.setState({ itemList });
}
答案 3 :(得分:-2)
将数据更新为对象数组的最佳方法
onChange={ (e) => this.setState({formData: { ...this.state.formData, 'plan_id': e.target.value}})}