Javascript 使用es6更新对象数组的属性值
上面的代码工作正常,但对我来说,它不是那么优雅,它看起来超级混乱,也不是那么灵活。如果我的id是数字,我就不能再做Javascript 使用es6更新对象数组的属性值,javascript,ecmascript-6,Javascript,Ecmascript 6,上面的代码工作正常,但对我来说,它不是那么优雅,它看起来超级混乱,也不是那么灵活。如果我的id是数字,我就不能再做切片(I+1)。我可以使用map和object assign来解决这个问题,但我正在寻找更多的替代方法来使用es6更新对象数组的属性值。另一种方法是使用npm包中的update,即使在嵌套状态和 function posts(state = [], action) { switch(action.type){ case 'INCREMENT_LIKES':
切片(I+1)
。我可以使用map和object assign来解决这个问题,但我正在寻找更多的替代方法来使用es6更新对象数组的属性值。另一种方法是使用npm包中的update
,即使在嵌套状态和
function posts(state = [], action) {
switch(action.type){
case 'INCREMENT_LIKES':
const i = action.index
return [
...state.slice(0,i),
{...state[i], likes: state[i].likes + 1},
...state.slice(i + 1),
]
default:
return state
}
}
export default posts
沃拉:这是一个很好的选择。如果我不使用redux,那么不可变性仍然重要吗?即使使用正常的ReactJS不可变性材料,您仍然可以使用它。我喜欢这样使用object.assign。您的想法是什么?根据redux文档,不建议使用object.assign,您应该改为使用spread运算符。然而,我发现不变性助手非常有用,为什么不推荐它?如果你使用webpack,你肯定用过babel。我认为不使用es2015/es6没有任何问题
import update from `immutability-helper`
function posts(state = [], action) {
switch(action.type){
case 'INCREMENT_LIKES':
const i = action.index
return update(state, {
[i]: {
likes: {
$set: state[i].likes + 1
}
}
})
default:
return state
}
}
export default posts