SuperAPI AI 工具集

ngrx-signals

前端与建站

查看项目

更新于 10-19 16:19

技能介绍

ngrx-signals 是一个面向 Angular 的现代信号式状态管理技能,专注于使用 @ngrx/signals 的 Signal Store 进行构建、重构和架构设计。它产出符合惯用法、类型安全且结构良好的 @ngrx/signals 代码。

用途

该技能在以下场景中触发使用:用户明确提及相关 API(如 signalStore、withState、withMethods、withComputed、withLinkedState、withHooks、withProps、withFeature、withEntities、rxMethod、signalMethod、patchState、getState、watchState、signalState,或 @ngrx/signals/events 与 @ngrx/signals/testing);用户希望将使用 BehaviorSubject/Subject 或可变字段类的服务重构为 Signal Store;用户询问 Angular 特性/页面状态管理并提及 Angular Signals 或期望“现代”方案;用户需要自定义存储特性(如 withRequestStatus、withSelectedEntity、withLogger)或特性组合;用户询问乐观更新、请求状态、实体集合或针对 HTTP API 的 CRUD 操作。它不适用于经典 @ngrx/store(actions、reducers、effects、独立选择器文件)、未使用 Signal Store 的 Redux DevTools 配置或纯 RxJS 管道问题。

主要能力

Signal Store 被视为组合特性的树,每个特性可贡献状态、计算信号、方法、属性和生命周期钩子,并在定义时组合。核心规则包括:状态更新必须通过 patchState 进行,不支持直接修改;存储是 Angular 提供者,可通过 inject 或 TestBed.inject 注入,并可在 root、路由或组件级别提供;复用通过 signalStoreFeature 自定义特性实现,而非继承。该技能提供标准脚手架、工作流指导(决定作用域、区分存储与服务、显式类型化状态、组合特性、选择合适异步工具、仅通过公共 API 测试)、常见错误与修正示例(如 updateEntity 的函数形式、removeEntities 的谓词形式、乐观更新快照与恢复、请求状态独立更新器、带类型重载的自定义特性前置条件、BehaviorSubject 重构映射),以及输出契约(始终使用 TypeScript 和显式类型、始终使用 patchState、HTTP 请求置于注入的服务中、优先使用命名更新器函数、优先使用 withEntities 管理实体、无需 RxJS 操作符时优先 signalMethod 等)。

使用方式

使用时,根据任务类型查阅对应参考文件:普通特性存储、计算、方法、rxMethod、signalMethod、RxJS 桥接、withLinkedState、watchState、事件插件、资源扩展等参阅 api-reference.md;实体集合 CRUD 参阅 entities.md;自定义可复用特性参阅 custom-features.md;架构、作用域、乐观更新、BehaviorSubject 重构参阅 patterns.md;测试、TestBed、模拟、signalMethod 测试参阅 testing.md。通常一个任务只需一个参考文件。该技能还列出了需标记的反模式,如混淆 @ngrx/store 与 @ngrx/signals、在存储内使用 HTTP、跨存储导入、手动管理实体数组、直接修改信号、对简单同步逻辑使用 rxMethod、未类型化状态、过时 API 名称等。

适用场景

适用于现代 Angular 应用的状态管理,包括特性级状态、组件级状态、根级状态、实体 CRUD、乐观更新、请求状态跟踪、自定义特性组合、服务重构以及测试。需要 Angular 环境并安装 @ngrx/signals 包。具体安装命令、版本要求和配置细节在提供的资料中暂未提供。

限制

该技能不适用于经典 @ngrx/store、纯 RxJS 管道问题或未使用 Signal Store 的 Redux DevTools 配置。它不处理与 Signal Store 无关的 Angular 状态模式。其他框架特定细节、收费信息、价格和平台支持情况在资料中暂未提供。