SAP 电商云 Spartacus 产品明细页面的 pageContext 如何获取的?
調試入口:this.routingService.getNextPageContext()
這個 page context 直接從 store 里讀取的,靠調試 selector 是拿不到的。
我們以前學習過,當 Angular router 框架成功將瀏覽器地址欄的 url,匹配到開發人員用 RouterModule.forChild 傳入的 routes 數組時,會拋出 RoutesRecognized 事件,如下圖所示:
if (event instanceof RoutesRecognized) {routesRecognized = event;if (!dispatchNavLate && this.trigger !== RouterTrigger.STORE) {this.dispatchRouterNavigation(event);}Angular router 框架這里提供了一個 hook,可以允許應用開發人員修改下一個 router state,即 nextRouterState 變量:
@Injectable() export class CustomSerializerimplements fromNgrxRouter.RouterStateSerializer<ActivatedRouterStateSnapshot>我們自己實現了 Angular router 框架的一個接口:
fromNgrxRouter.RouterStateSerializer
這里硬編碼了,只要 routerState 里的參數,出現了 productCode,我們就認為這是一個 Product page:
然后我們的 reducer 被調用:
這些都是之前 serializer populate 出的數據:
這里我們把 navigation target 寫入 in-memory state, 這樣接下來的 selector,就能從 state 里讀取出 product 明細頁面的 page context 了:
疑問至此解開。
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的SAP 电商云 Spartacus 产品明细页面的 pageContext 如何获取的?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP 电商云 Spartacus 产品
- 下一篇: Meta挖来AI网络芯片专业团队,开发A