为什么购物车 React-Redux 不更新?



我正在使用react redux构建一个购物车。我希望能够在添加数量(最初1件(后将产品添加到购物车中。如果用户想要,它可以更新这个数量(更高或更低(。

此时此刻,我不断遇到同样的问题,添加了一个产品,但用户无法再更新它。

调度代码

function addToCart() {
console.log(oneBox);
dispatch(addCart(oneBox));
}

然后操作代码:

export const addCart = (oneBox) => {
return async (dispatch, getState) => {
dispatch(appLoading());
const curCart = getState().cart;
console.log(curCart);
let productCart = { ...oneBox };
productCart = { ...productCart, amount: 1 };
if (!curCart.cart) {
dispatch(addCartSuccess([productCart]));
} else {
if (parseInt(curCart.cart.map((cart) => cart.id)) === oneBox.id) {
dispatch(updateCartSuccess(oneBox));
} else {
dispatch(addCartSuccess([productCart]));
}
}
dispatch(appDoneLoading());
};
}:

则还原器代码:

export default  (state = initialState, { type, payload }) => {
switch (type) {
case ADD_CART_SUCCESS:
return { ...state.cart, ...payload };
case UPDATE_CART_SUCCESS:
console.log(payload);
return {
...state,
cart: state.cart.map((cart) => {
if (cart.id === payload.id) {
return {
...cart,
amount: payload.amount + 1,
};
}
return cart;
}),
};

它需要做的是首先检查发送的产品(oneBox(是否已经在购物车中,如果没有将产品添加到购物车中(工作正常(。如果产品已经在购物车中,只需更新金额(无效(。

有人能看到我在这里做错了什么吗?

ps。请放心,我是一名初级开发人员。我不知道基于类的react或mapStateToProps。

我认为当您将cart与oneBox进行比较时,该行存在问题,因为在数组上调用parseInt将只解析第一个元素。我假设你想检查购物车中的一个item.id是否与一个Box.id匹配。这是的一种方法

if (curCart.cart.filter((cart) => cart.id === oneBox.id).length) {
dispatch(updateCartSuccess(oneBox));
}

上面的代码过滤与oneBox.id匹配的cart。如果没有找到任何内容,那么它将导致长度为0的空数组(falsy(。如果找到,数组将大于0(很可能是1,这是真的(

相关内容

  • 没有找到相关文章

最新更新