【问题标题】:React Redux: How to add a property to an empty object in the reducerReact Redux:如何将属性添加到减速器中的空对象
【发布时间】:2020-05-10 07:13:50
【问题描述】:
const INITIAL_STATE = {
  editedProduct: {},
};

reducer.js

   case ADD_SWATCH:
      const typeSwatch = action.payload;
      return merge(state, {
        editedProduct: {
          ...state.editedProduct,
          [typeSwatch]: [
            ...state.editedProduct[typeSwatch],
            {
              dimSwtNo: state.editedProduct[typeSwatch].length
                ? state.editedProduct[typeSwatch].length + 1
                : 1,
            },
          ],
        },
      });

我收到一个错误: 可能的未处理承诺拒绝(id:0): TypeError: 传播不可迭代实例的尝试无效

问题出在这一行

...state.editedProduct[typeSwatch],

指的是尚未初始化的属性。

我该如何解决这个问题?

【问题讨论】:

    标签: javascript reactjs redux react-redux reducers


    【解决方案1】:

    正如错误提示的那样,您不能传播 null / undefined 值。这里最简单的方法是在尚未设置属性的情况下使用默认值,例如

    ...(state.editedProduct[typeSwatch] || [])
    

    由于您在几个地方使用了这个值,所以在更远的地方创建一个变量是有意义的。

    【讨论】:

    • 酷。我没有考虑。它解决了我的问题:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 2019-01-27
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    相关资源
    最近更新 更多