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

Angular NGRX报错:state.data不可迭代,合并数据失败求助

问题原因与解决方案

错误原因

你代码里的state.data是对象类型(从你最终要生成的{ [payload.page?.toString() ?? '0']: ... }结构能明确看出来),但你却使用了数组展开运算符...state.data——对象无法被数组展开运算符直接迭代,所以触发了TypeError: state.data is not iterable错误。

解决方案

根据你要实现的“按page存储数据,且对应page下追加新数据”的逻辑,修正代码如下:

on(apiActionGroup.success,
  (state, payload) => newState(state, {
    data: {
      ...state.data, // 保留原state.data中已有的所有page数据
      [payload.page?.toString() ?? '0']: [...(state.data[payload.page?.toString() ?? '0'] || []), ...payload.data]
    }
  })
),

关键说明:

  • 先用...state.data展开原对象的所有键值对,避免覆盖已存在的其他page数据
  • 针对当前page,先尝试获取原state.data中该page对应的数组:如果不存在(比如第一次加载该page),就用空数组[]兜底,再用数组展开运算符追加payload.data

额外注意

检查你的state初始值,确保state.data的初始类型是空对象{},而不是数组[]或者undefined,否则第一次执行时仍可能出现类型不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 20:17:34