在 components.reducer.ts 里,loaderReducer 函数,会根据输入的 entityType,返回一阶 reducer.

SAP Commerce Cloud Spartacus UI 的高阶 reducer 设计

然后在代码第86行,调用该一阶 reducer 进行状态转换,返回新的状态。

在 cms store reducers index.ts 里,该 reducer 被导入,见代码第21行:

SAP Commerce Cloud Spartacus UI 的高阶 reducer 设计

然后,在第49行,调用 entityReducer,给 COMPONENT_ENTITY 类型生产一个新的 reducer 函数。

SAP Commerce Cloud Spartacus UI 的高阶 reducer 设计

这个新的 reducer 的函数体:

SAP Commerce Cloud Spartacus UI 的高阶 reducer 设计

getReducer 在何时会被调用?

SAP Commerce Cloud Spartacus UI 的高阶 reducer 设计

除了 index.ts 之外,其他都是单元测试代码:
SAP Commerce Cloud Spartacus UI 的高阶 reducer 设计

通过工厂方法 + injection token 的方式暴露给外部:

SAP Commerce Cloud Spartacus UI 的高阶 reducer 设计

最后被导入到 CmsStore module 的 providers 区域里即可:

SAP Commerce Cloud Spartacus UI 的高阶 reducer 设计

更多Jerry的原创文章,尽在:"汪子熙":
SAP Commerce Cloud Spartacus UI 的高阶 reducer 设计

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-12
  • 2021-09-13
  • 2022-12-23
  • 2021-05-26
相关资源
相似解决方案