React Redux:如何将 属性 添加到 reducer 中的空对象
React Redux: How to add a property to an empty object in the reducer
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):
类型错误:传播不可迭代实例的无效尝试
问题出在这一行
...state.editedProduct[typeSwatch],
指的是一个属性还没有初始化的
我该如何解决这个问题?
如错误所示,您不能传播 null
/ undefined
值。这里最简单的方法是在尚未设置 属性 的情况下使用默认值,例如
...(state.editedProduct[typeSwatch] || [])
由于您在几个地方使用了这个值,因此在更上层创建一个变量是有意义的。
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): 类型错误:传播不可迭代实例的无效尝试
问题出在这一行
...state.editedProduct[typeSwatch],
指的是一个属性还没有初始化的
我该如何解决这个问题?
如错误所示,您不能传播 null
/ undefined
值。这里最简单的方法是在尚未设置 属性 的情况下使用默认值,例如
...(state.editedProduct[typeSwatch] || [])
由于您在几个地方使用了这个值,因此在更上层创建一个变量是有意义的。