我具有以下功能来获取currentStatus和id并根据上述参数更改值。我有以下状态。
this.state.column : [
[
arr1 : { id: 1, currentStatus: ''to-do'},
{ id: 4, currentStatus: ''completed'},
],
[
arr2 : { id: 10, currentStatus: ''in-progress'},
{ id: 14, currentStatus: ''completed'},
],
]
我要为以下函数提供新的currentStatus和特定的id作为参数,并且需要用新的currentStatus替换现有的currentStatus。可以通过id(对于整个数组是唯一的)找到特定的对象。 我正在尝试以下代码,最终得到错误Cannot read property 'nn' of undefined
import update from 'immutability-helper';
getCurrentStatus = (currentStatus, id) => {
Object.keys(this.state.columns).forEach(ee => {
if (this.state.columns[ee].find(x => x.id === id)){
var nn = this.state.columns[ee].findIndex(x => x.id === id)
this.setState({
columns : update(this.state.columns, {ee:{nn:{$set : currentStatus}}})
}, () =>
console.log(this.state.columns)
)
}
})
}
答案 0 :(得分:3)
在您的代码中,ee
和nn
变量是键和索引,因此我假设您要使用这些变量中的值编写一个对象。因此,您的update
呼叫应如下所示:
update(this.state.columns, { [ee]: { [nn]: { $set : currentStatus }}})
我们使用方括号来定义带有变量的键,如下所示:
const key = 'test';
console.log({ [key]: true }); // print: { test: true }