我有这组数据this.state = { weeks: [ { weekNumber: 1, weights: [] }, { weekNumber: 2, weights: [] } ]}
我想做的是创建一个新数组并将其设置为“ weights”。我检查了其他类似这样的帖子:
Set state of nested array
我假设我做类似的事情。
编辑:另外,例如,说我想更新每个星期的权重数组,我将如何去做呢?
最佳答案
我通常使用以下解决方案:
const newWeeks = [ ...this.state.weeks ];
newWeeks[0] = { ...newWeeks[0] };
//modify `newWeeks`
this.setState({
weeks: newWeeks
});
更新1:
实时版本:https://codesandbox.io/s/20v7r2zx0j?fontsize=14&module=%2Fsrc%2FTest.js
更新2:谢谢@bird。问题是复制数组(或对象)时,Spread仅深入一层,因此我们需要在此处执行额外的步骤:
newWeeks[0] = { ...newWeeks[0] };