改变状态reducer redux中的属性值

时间:2017-04-13 12:49:31

标签: javascript reactjs redux

我有一个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更改状态中的属性值?

2 个答案:

答案 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.

});