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
以上代码有效但对我而言并不那么优雅,它看起来非常混乱而且不那么灵活。如果我的ID号码有问题,我就不能再slice(i + 1)
了。我可以使用带有对象分配的地图来解决它,但我正在寻找更多替代方法update property value of array of object using es6
答案 0 :(得分:0)
另一种方法是使用来自npm package immutability-helper的update
,即使在深度嵌套状态和
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