You need to enable JavaScript to run this app. React Redux购物车添加商品时localStorage不存储、state不更新问题求助
优惠活动
大模型
产品
解决方案
定价
更多

React Redux购物车添加商品时localStorage不存储、state不更新问题求助

问题原因

核心错误出在cartReducer.js的逻辑中:
Redux reducer 是通过匹配action.type字段来执行对应状态更新逻辑的,你当前代码的switch语句错误判断了action.state字段,而action对象上根本不存在这个属性,因此所有action都会直接走default分支,直接返回原始state,不会执行任何更新操作,也就自然出现了action触发成功但state无变化的问题,后续存储localStorage时读取的还是未更新的旧state,因此也无法持久化新加入的商品。

修复方案

仅需修改cartReducer.js中的switch判断条件即可:
将原来的

switch (action.state) {

修改为

switch (action.type) {

修改完成后完整的cartReducer.js参考代码:

import { CART_ADD_ITEM, CART_REMOVE_ITEM } from "../constants/cartConstants";

export const cartReducer = (state = { cartItems: [] }, action) => {
  switch (action.type) {
    case CART_ADD_ITEM:
      const item = action.payload;
      const existItem = state.cartItems.find(
        (x) => x.productID === item.productID
      );

      if (existItem) {
        return {
          ...state,
          cartItems: state.cartItems.map((x) =>
            x.productID === existItem.productID ? item : x
          ),
        };
      } else {
        return {
          ...state,
          cartItems: [...state.cartItems, item],
        };
      }
    case CART_REMOVE_ITEM:
      return {
        ...state,
        cartItems: state.cartItems.filter(x => x.productID !== action.payload)
      }
    default:
      return state;
  }
};

修改完成后,reducer就能正确匹配到CART_ADD_ITEM类型的action,执行对应的购物车商品添加逻辑,state更新后,后续的localStorage存储也会正常生效。

内容的提问来源于stack exchange,提问作者Ankush Dogra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 00:24:03