【发布时间】:2020-01-22 17:18:28
【问题描述】:
所以我正在构建一个电子商务应用程序,并且我有两个值存储在 redux 状态中来处理购物车。一个是对象数组,每个对象包含 objectID 和数量的两个键。另一个是包含产品信息的对象,其 objectID 作为键。这是我的操作/调度的代码。
addToCart: (product) => {
return (dispatch, getState) => {
const {productQuantity, storeSelected, products, storeKeys} = getState().Ecommerce;
const UPC = product.UPC;
let newQuant = 1;
let newProducts;
for(var p in productQuantity) {
if (productQuantity[p].UPC === UPC) {
newProducts = products
newQuant += productQuantity[p].quantity;
productQuantity[p] = ({UPC, quantity: newQuant});
}
}
if (!newProducts) {
console.log("not found")
productQuantity.push({UPC, quantity: 1});
newProducts = {
...products,
[UPC]: {
...product,
price: product.stores[storeKeys[storeSelected]].price,
fromStore: storeKeys[storeSelected],
}
}
}
dispatch({
type: actions.CHANGE_CART,
products: newProducts,
productQuantity
});
};
},
动作肯定会运行。接下来是我的减速机。
case actions.CHANGE_CART:
console.log('This runs')
console.log(action.products);
console.log(action.productQuantity);
return {
...state,
products: action.products,
productQuantity: action.productQuantity
};
这也会执行,实际上在检查状态时,productQuantity 会在 state 中更新,但 products 不会。在这一点上,我已经尝试了所有的定义配置,并且正在撕毁我的头发。非常感谢您的帮助。
我可以确认的:
- 正在将正确的数据分派给减速器。
- reducer 执行。
- ProductQuantity 由reducer 正确更新并具有正确的值。
【问题讨论】:
标签: javascript reactjs redux redux-saga redux-thunk