在reducer

时间:2017-05-24 16:26:29

标签: reactjs

我正在尝试添加到我的对象中的数组,我正在传递id和值来添加:

case ADD_ACHIEVEMENT:
  return [
    {
      id: action.id,
      achievements: [...state.achievements, action.label]
    },
    ...state
  ]

初始状态:

const initialState = [
  {
    date: "Fri 1st",
    enjoyments: [],
    achievements: [],
    id: 0
  },
  {
    date: "Fri 2",
    enjoyments: [],
    achievements: [],
    id: 1
 },

如何在reducer中添加值?

编辑:对不起我是redux的新手我可能没有正确解释自己。我想更新achievement中传递的id action数组。我的成就数组只是一个字符串数组。我只想添加另一个条目。

获取sytax错误:

语法错误:C:/sites/CalendarRedux/src/reducers/days.js:意外的令牌,预期,(62:11)

case ADD_ACHIEVEMENT:
  return state.map(day => {
    if (day.id === action.id) {
      return Object.assign({}, day, {
        achievements: [
          ...day.achievements,
          action.label,
        ]
      }; <<<<<<< line 62
    }

    return day;
 });

1 个答案:

答案 0 :(得分:0)

case ADD_ACHIEVEMENT:
  return state.map(item => {
    if (item.id === action.id) {
      return Object.assign({}, item, {
        achievements: [
          ...item.achievements,
          action.label,
        ]
      });
    }

    return item;
 });

鉴于您的评论,您基本上希望更新数组中与该操作传递的id匹配的项目。这是一种方法,基本上,如果您不想更新它,则将每个项目映射到自身,并更新与id匹配的项目。您所犯的错误是尝试访问state.achievements而您需要访问特定项目的achievements