【问题标题】:How to add and remove property from Redux state如何从 Redux 状态添加和删除属性
【发布时间】:2019-12-22 05:04:46
【问题描述】:

我有一个初始状态:

let initialState = {
   items: []
}

我有一个来自我的操作的有效负载,例如:

{name: 'A', age: 2}, {name: 'B', age: 1}

将我的有效负载设置为我的减速器后:

case SET_ITEMS:
      return {
        ...state,
     items: [...state.items, ...action.payload],
      };

之后我的状态是:

 let initialState = {
       items: [
          {name: 'A', age: 2}, 
          {name: 'B', age: 1}
       ],
    }

所以我想为项目中的每个项目添加一个类似的属性:

 let initialState = {
           items: [
              {name: 'A', age: 2, active: true}, 
              {name: 'B', age: 1, active: true}
           ],
        }

我该怎么做?

【问题讨论】:

  • 为什么不直接在 dispatch action 的时候添加属性呢?

标签: reactjs redux


【解决方案1】:

您可以使用map 来此:

case SET_ITEMS:
  return {
    ...state,
    items: state.items.map(item => ({
        ...item,
        active: true
      }))
    };

【讨论】:

  • 第 202 行:解析错误:意外的令牌,应为“,”
  • @user3348410 对不起,我的错,缺少一个额外的括号,我已经编辑了答案。
【解决方案2】:

如果您想同时更新有效负载和状态以添加额外的属性,您也可以这样做。

case SET_ITEMS:
  return {
    ...state,
 items: [
...state.items.map(item => ({
        ...item,
        active: true
      })),
 ...action.payload.map(item => ({
        ...item,
        active: true
      }))
],
  };

【讨论】:

    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    相关资源
    最近更新 更多