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

如何在NGRX Reducer中获取Entity的列表长度?

解决方案

要在Reducer中获取当前实体列表的长度,直接利用NGRX Entity State自带的ids数组即可——ids数组存储了所有已存在实体的ID,它的长度就是当前实体的总数量。

1. 完善Reducer逻辑

修改你的Reducer处理函数,通过state.ids.length获取列表长度并赋值给initialItemListSize:

on(ItemActions.saveItemListSizeNow, (state) => {
    const size = state.ids.length;
    return { ...state, initialItemListSize: size };
  }),

2. 确保Action定义正确

确认saveItemListSizeNow是一个无负载的简单action,示例定义如下:

export const saveItemListSizeNow = createAction(
  '[Item] Save Item List Size Now'
);

补充说明

NGRX Entity的EntityState默认包含两个核心属性:

  • ids(类型为string[] | number[]):所有实体的ID集合,仅包含已存在的实体ID
  • entities(类型为Dictionary<T>):以ID为键的实体对象映射

state.ids.length的性能优于Object.values(state.entities).length,因为不需要遍历实体对象即可直接获取数量,结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:39:45