我有一个reducer,状态是一个对象数组。
state = [{
id: 1,
name: 'peter',
visible: false
},
{
id: 2,
name: 'alan',
visible: false
];
我的减速机的相关部分看起来像这样。
action.id
这里是1
case 'TOGGLE_VIEW':
return state.map(item => {
if(item.id === action.id) {
item.visible = !item.visible;
}
});
上面的代码将状态返回为[null, null]
任何人都可以解释我如何根据传入的id更改状态中的属性值?
答案 0 :(得分:2)
跟随naortor的回答,因为redux状态应该是不可变的,你应该这样做:
case 'TOGGLE_VIEW':
return state.map(item => {
if (item.id === action.id) {
return {
...item,
visible: !item.visible,
}
}
return item
});
答案 1 :(得分:0)
您在地图回调函数
中缺少返回case 'TOGGLE_VIEW':
return state.map(item => {
if(item.id === action.id) {
item.visible = !item.visible;
}
return item // you need a return inside your map callback function.
});