Javascript 为什么cart React Redux不';不更新?
我正在用react redux构建一个购物车。我想能够添加一个产品到购物车后,添加金额(初始1件)。如果用户需要,它可以更新该数量(更高或更低) 在这一刻,我不断得到相同的问题,一个产品被添加,但用户无法更新它了 调度代码Javascript 为什么cart React Redux不';不更新?,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我正在用react redux构建一个购物车。我想能够添加一个产品到购物车后,添加金额(初始1件)。如果用户需要,它可以更新该数量(更高或更低) 在这一刻,我不断得到相同的问题,一个产品被添加,但用户无法更新它了 调度代码 function addToCart() { console.log(oneBox); dispatch(addCart(oneBox)); } 然后是操作代码: export const addCart = (oneBox) => {
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;
}),
};
它需要做的是首先检查发送的productid(oneBox)是否已经在购物车中,如果没有,则将产品添加到购物车中(工作正常)。如果产品已经在购物车中,只需更新金额(不起作用)
有人知道我做错了什么吗
请耐心听我说,我是一名初级开发人员。我不知道如何使用基于类的react或mapStateToProps。我认为当您将cart与oneBox进行比较时,行有问题,因为在数组上调用
parseInt
将只解析第一个元素。我假设您希望检查购物车中的item.id是否与oneBox.id匹配。这是一种方法
if (curCart.cart.filter((cart) => cart.id === oneBox.id).length) {
dispatch(updateCartSuccess(oneBox));
}
上面的代码筛选与oneBox.id匹配的购物车。。如果未找到任何内容,则将生成长度为0(falsy)的空数组。如果找到,数组将大于0(很可能是1,这是真实的)请提供一个工作片段,如果您有一个片段可以清楚地显示您的问题,它将比没有片段更快地解决您的问题,例如,您可以从代码沙盒创建一个片段