angular - ngrx:跨多个功能模块创建可重用的操作
问题描述
我有一个包含几个功能模块的 Angular 5 应用程序。每个模块负责特定页面的资产并且是延迟加载的。
src/
|--app/
|--core/ <-- core functionality here
|--landing/
|--store/
|--about-us/
对于每个模块,我都有顶级页面组件,它们连接到商店并以非常相似的方式跨页面获取数据。
登陆组件.ts
this.store.pipe(select(getDataForThisPage));
...
this.store.dispatch(new PageAction.FetchData());
因此,每个页面组件都从后端获取数据并将其放入自己的特征存储中。
这里的问题是 a) 动作、b) 效果甚至 reducer 存储形状对于所有功能模块都非常相似。所以理想情况下,我想至少重用动作,但如果它也是可能的效果/存储的话。
最好的方法是什么?
解决方案
看看@ngrx/entity。
如果你想自己做类似的事情,你可以定义一个接口,定义你如何在你的状态下存储数据。您可以使用泛型参数来确保实际“实体”的类型安全。您可以创建将实体名称作为输入的辅助函数,然后创建操作和减速器,其中操作以您的实体名称为前缀。
但在自己尝试之前,我会先试一试@ngrx/entity,这样你就可以了解什么是可能的。
推荐阅读
- php - Laravel 6:在仍登录时删除用户
- php - 用户从支付网关重定向回网站后 CodeIgniter 会话数据丢失
- javascript - 在轮播中更改幻灯片的问题,仅用 js 和 css 编写
- reactjs - 承诺中的 setInterval,在 React 中只执行一次
- php - 是否可以编辑和编写现有的 PDF 文件?
- jar - 如何打开 edumips.jar?
- javascript - 如何更改数组中最后一个索引的内容?
- firebase-realtime-database - 如何将用户数据库复制到 Firbase 中的永久数据库
- python - 如果 __init__ 中出现问题,如何防止调用方法?
- javascript - 变量上的 JavaScript 事件循环操作是否阻塞?