我正在努力找出使用 immutability helper 修改对象数组中的每个值的最佳实践。 .
例如,如果我的州有这样的情况:
this.state = {
items: [
{
name: "test",
subItems: [
{val: false}, {val: true}, {val: false}
]
},
{
name: "test2",
subItems: [
{val: true}, {val: true}, {val: false}
]
}
]
}
我想将每个 val
设置为 false
,我该怎么做。
我可以一次做一个,但一定有更好的方法:
let elements = update(this.state.items, {
[idx1]:{
subItems:{
[idx2]:{
val: {
$set: false
}
}
}
}
});
最佳答案
这当然是可能的,但乍一看根本不可读或无法理解。
const nextState = update(state, {
items: {
$apply: (items) => {
return items.map(item => {
return update(item, {
subItems: {
$apply: (subItems) => {
return subItems.map(subItem => {
return update(subItem, {
val: {
$set: false
}
})
})
}
}
})
})
}
}
});
关于javascript - 使用不变性助手修改数组的每个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41730417/