Javascript Redux persist不是persistent quantity,而是persistent cart total?
我试图保持购物车的状态(物品、每件物品的数量、小计和总数)。我正在为此使用Javascript Redux persist不是persistent quantity,而是persistent cart total?,javascript,reactjs,react-redux,redux-persist,Javascript,Reactjs,React Redux,Redux Persist,我试图保持购物车的状态(物品、每件物品的数量、小计和总数)。我正在为此使用redux persist 我的问题是,当我更改购物车中物品的数量(例如,从1更改为5),然后刷新页面时,数量将返回到1。小计和总计仍然反映上述项目的价格x 5。刷新后无法更改数量,如果我继续尝试增加数量,购物车小计和总计仍然会增加 ChromeDevTools中的数量也没有变化(在应用程序的“存储>本地存储”选项卡下),所以我认为这不是一个显示问题 我在我的configureStore.js文件中尝试了白名单/黑名单某些
redux persist
我的问题是,当我更改购物车中物品的数量(例如,从1更改为5),然后刷新页面时,数量将返回到1。小计和总计仍然反映上述项目的价格x 5。刷新后无法更改数量,如果我继续尝试增加数量,购物车小计和总计仍然会增加
ChromeDevTools中的数量也没有变化(在应用程序的“存储>本地存储”选项卡下),所以我认为这不是一个显示问题
我在我的configureStore.js
文件中尝试了白名单
/黑名单
某些状态。我不认为这是redux persist
包的问题,我认为这是我如何实现它的问题,或者我的商店是如何建立的
如何为我的购物车保留物品、每件物品的数量和小计/总数?更重要的是,我关心的是物品的数量以及购物车小计和总计是否保持同步。
我已经把我的代码上传到了,所以你可以看到所有的东西以及它们是如何相互作用的 问题不在于
redux persist
,而在于ADD\u QUANTITY
减速机中存在缺陷
目前看起来是这样的:
if (action.type === ADD_QUANTITY) {
let addedItem = state.items.find(item => item.id === action.id);
addedItem.quantity += 1;
let newSubTotal = state.subTotal + addedItem.price;
return {
...state,
subTotal: newSubTotal,
cartTotal: newSubTotal + shippingCost
}
}
因此,此操作从所有可用项的列表中查找该项,然后增加其数量(通过改变原始对象,这不是最佳做法,但不是这里的问题),并计算新的小计。然后它对更新的项目不做任何操作
由于您已将项目添加到您所在州的addedItems
数组中,您需要在那里找到它并更新该版本的副本,然后将更新后的列表作为新的addedItems
数组返回:
if (action.type === ADD_QUANTITY) {
const addedItem = state.addedItems.find(item => item.id === action.id);
let newSubTotal = state.subTotal + addedItem.price;
const updatedItems = state.addedItems.map(item =>
item.id === action.id ? { ...item, quantity: item.quantity + 1 } : item
);
return {
...state,
addedItems: updatedItems,
subTotal: newSubTotal,
cartTotal: newSubTotal + shippingCost
};
}
我已经实现了您的解决方案,并且对
减量操作也做了类似的操作。现在,它似乎正在发挥应有的作用。谢谢你的指导!