You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React-Redux加购触发state.items is not iterable错误如何解决

React-Redux 报错 TypeError: state.items is not iterable 解决方案

报错截图
报错本质:执行[...state.items , action.payload]代码时,state.items为非可迭代类型(常见为undefined、null),无法使用展开运算符导致报错。

修复步骤

步骤1:修改reducer的addToBasket逻辑

reduxsauce的createReducer会自动传入当前state,不需要给state手动设置INITIAL_STATE默认值,同时给state.items加空数组兜底,避免非数组场景报错:

// 修改前
export const addToBasket = (state = INITIAL_STATE, action) => ({ ...state, items: [...state.items , action.payload]});

// 修改后
export const addToBasket = (state, action) => ({ 
  ...state, 
  items: [...(state.items ?? []), action.payload]
});

步骤2:排查其他操作items的逻辑

检查项目中是否存在其他修改购物车items的逻辑,比如清空购物车、同步购物车的相关handler,确认这些逻辑不会把items赋值为undefined、null或者其他非数组类型。

步骤3:定位异常值(可选)

如果修复后问题仍存在,可在addToBasket中增加日志打印,确认触发报错时state.items的具体值,反向定位是哪段逻辑修改了items的类型:

export const addToBasket = (state, action) => {
  console.log('当前items值:', state.items)
  return {
    ...state,
    items: [...(state.items ?? []), action.payload]
  }
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:33:02