首页 > 解决方案 > 使用扩展运算符更新 redux 中的动态对象

问题描述

我正在尝试使用扩展运算符更新 redux 中的对象,但我无法做到。初始状态是一个空对象,因为类别是从 api 调用动态接收的。
页面数据都是我想使用扩展运算符更新的对象(或任何最有效的对象)

 state = {
      [category]: {
        pages: {
          key: value(array)
        },
        data: {
          key: value(array)
        }
      }
    }

在我的减速机上,我尝试像这样更新它

 return {
        ...state,
        [category]: {
          ...state[category],
          pages: { ...state[category].pages, pages },
          data: { ...state[category].data, doctors },
          total: total,
        },
      };

但我得到“错误:TypeError:无法读取未定义的属性'页面'”

我做错了什么,如何正确更新它们?

标签: javascriptreactjsredux

解决方案


因为state.category在您第一次获取此类别时未定义。你可以这样修复它:

return {
  ...state,
  [category]: state.category
    ? {
        ...state[category],
        pages: { ...state[category].pages, pages },
        data: { ...state[category].data, doctors },
        total: total,
      }
    : {
        pages,
        data: doctors,
        total,
      },
};

推荐阅读