我使用 redux 编写了一个简单的添加到购物车功能。当我尝试将产品添加到数组时,它会抛出错误:
state.products.push 不是一个函数。
初始状态
export const INITIAL_STATE = {
products: []
};
Run Code Online (Sandbox Code Playgroud)
我使用 redux-sauce 来调度该操作。
减速器
export const AddToCart = (state, { item }) => ({
...state,
products: state.products.push(item),
});
Run Code Online (Sandbox Code Playgroud)
这里的主要问题是您将 的值设置state.products为 的返回值push()。 该push()方法不返回数组。它会改变数组(您不应该在 Redux 中这样做),并返回新的 length。调用此减速器后,您的state.products属性将从数组更改为number.
您可以使用concat()代替。此方法返回一个新数组,其中附加了项目。它不会修改原始数组,因此它是 Redux 安全的。
我对 redux-sauce 不太熟悉,但似乎你需要state = INITIAL_STATE在每个 case 减速器上都包含它。
export const AddToCart = (state = INITIAL_STATE, { item }) => ({
...state,
products: state.products.concat(item),
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2534 次 |
| 最近记录: |