SAP|SAP Spartacus 标准的 Effects 实现的注入原理
先研究标准的 effect 为何可以被 call 到:在 ProductReviewsEffects 构造函数里设置断点:
文章图片
发现在访问首页时,断点即触发。
文章图片
为什么 AppModule 启动时,就要加载 ProductReviewEffect?
文章图片
单击 AppModule,就跳转到我自定义的 AppModule 文件了,但是该文件里并没有 ProductReviewEffect:
文章图片
这个 EffectFeatureModule 是标准框架的实现:
文章图片
【SAP|SAP Spartacus 标准的 Effects 实现的注入原理】Spartacus 所有标准的 Effects 实例,都是在下列代码 ngrx-effects.js 里实例化的:
文章图片
function createEffects(injector, effectGroups, userProvidedEffectGroups) {
/** @type {?} */
const mergedEffects = [];
for (let effectGroup of effectGroups) {
mergedEffects.push(...effectGroup);
}
for (let userProvidedEffectGroup of userProvidedEffectGroups) {
mergedEffects.push(...userProvidedEffectGroup);
}
return createEffectInstances(injector, mergedEffects);
}
![SAP|SAP Spartacus 标准的 Effects 实现的注入原理](https://img.it610.com/image/info9/81f672189521470894d8da146873a9f1.jpg)
文章图片
问题就是,对于 AppModule 而言,这些 Effects 是从哪里解析出来的?
![SAP|SAP Spartacus 标准的 Effects 实现的注入原理](https://img.it610.com/image/info9/cd5bbe53ff2d4e8da1cb23bf85831793.jpg)
文章图片
看一下标准的 Effects 是怎么做的?
![SAP|SAP Spartacus 标准的 Effects 实现的注入原理](https://img.it610.com/image/info9/b6e9e08ccd604e64999bc98b552ac080.jpg)
文章图片
![SAP|SAP Spartacus 标准的 Effects 实现的注入原理](https://img.it610.com/image/info9/3bcf89c711794da8a508abdc7115bd3e.jpg)
文章图片
export const effects: any[] = [
ProductsSearchEffects,
ProductEffects,
ProductReviewsEffects,
ProductReferencesEffects,
];
EffectsModule.forFeature(effects),
解决方案
![SAP|SAP Spartacus 标准的 Effects 实现的注入原理](https://img.it610.com/image/info9/f04de1f40d51426d9f11eb255d0f5994.jpg)
文章图片
![SAP|SAP Spartacus 标准的 Effects 实现的注入原理](https://img.it610.com/image/info9/b78f4e89e04844909f509fad2cbed9a0.jpg)
文章图片
最后,生效了:
![SAP|SAP Spartacus 标准的 Effects 实现的注入原理](https://img.it610.com/image/info9/2c26c3cdceb24c09a1aa529552bf6c0c.jpg)
文章图片
更多Jerry的原创文章,尽在:"汪子熙":
![SAP|SAP Spartacus 标准的 Effects 实现的注入原理](https://img.it610.com/image/info9/d4d0f26abf3c4747a36dae12b172b6ee.jpg)
文章图片
推荐阅读
- 活跃社群的核心标准是什么()
- 今日份H5
- 3.css浮动
- 选老公的标准障碍了我看男盆友的眼
- 世界脑力锦标赛官方公布2018年世界记忆大师新评定标准!
- 浏览器标准模式和怪异模式之间的区别是什么?
- 「原宿」01门店区域卫生标准|「原宿」01门店区域卫生标准 -
- 你找工作的标准是什么()
- 84、《销售》④十大秘诀之四(标准)
- 01|01 HTML基础