如何检测 SAP 电商云 Spartacus UI 当前正处于导航状态
使用 routing.selector.ts 里的 isNavigating:
設(shè)計原理:Spartacus route reducer 里針對 ROUTER_NAVIGATION 和 ROUTER_NAVIGATED 進(jìn)行狀態(tài)遷移:
當(dāng)接收到 ROUTER_NAVIGATION(跳轉(zhuǎn)正在進(jìn)行) 事件時,將狀態(tài)的 nextState 字段設(shè)置成 action payload:
當(dāng)接收到 ROUTER_NAVIGATED(跳轉(zhuǎn)已經(jīng)完成) 事件時,將狀態(tài)的 nextState 字段設(shè)置成 undefined:
回到本文開頭的 API,如果 nextState 不為空,說明正在 navigating.
selector 就是純函數(shù),能夠返回 state 的某一個切片的數(shù)據(jù)。
只有通過 createSelector 創(chuàng)建的 selector,才具有記憶功能(memoized),即對于相同的輸入,一定會返回相同的輸出。
為什么 pageMetaService 會觸發(fā)到 Router State 的 selector?
看看 this.meta$ 的數(shù)據(jù)源:
meta$ 來自 this.cms.getCurrentPage:
從全局 store 里調(diào)用 RoutingSelector 的 getPageContext 方法:
最后 selector 被調(diào)用:
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結(jié)
以上是生活随笔為你收集整理的如何检测 SAP 电商云 Spartacus UI 当前正处于导航状态的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宠物荷兰猪其实是哪种动物?蚂蚁庄园5.7
- 下一篇: @ngrx/router-store 在