@ngrx/router-store 在 SAP 电商云 Spartacus UI 开发中的作用

举报
汪子熙 发表于 2022/09/02 11:54:32 2022/09/02
【摘要】 标题:@ngrx/router-store 的作用官网用于将 Angular Router 与 Store 连接的绑定。 在每个路由器导航周期中,会分派多个动作,让您可以监听路由器状态的变化。 然后,您可以从路由器的状态中选择数据,为您的应用程序提供附加信息。安装:npm install @ngrx/router-store --save之后,在 package.json 会出现一个依赖: ...

标题:@ngrx/router-store 的作用

官网

用于将 Angular Router 与 Store 连接的绑定。 在每个路由器导航周期中,会分派多个动作,让您可以监听路由器状态的变化。 然后,您可以从路由器的状态中选择数据,为您的应用程序提供附加信息。

安装:

npm install @ngrx/router-store --save

之后,在 package.json 会出现一个依赖:

action

Router Store 提供了五个按特定顺序调度的导航操作。 Router Store 提供的 routerReducer 使用 actions 给出的最新路由器状态更新其状态。 默认情况下,我们建议使用我们提供的 creator function.

routerRequestAction

在每次导航开始时,路由器将调度 ROUTER_REQUEST action.Spartacus 没有用到这个 action.

routerNavigationAction

在导航期间,在任何 guard 或 resolvers 运行之前,路由器将调度 ROUTER_NAVIGATION 操作。

Spartacus 里使用到了这个 action:

navigation target:

routerNavigatedAction

成功导航后,路由器将调度 ROUTER_NAVIGATED action.

事件 ROUTER_NAVIGATION 触发时,home page 的 page guard 和 resolver 还没有执行:

事件 ROUTER_NAVIGATED 发生时,跳转已经成功完成了。所以 nextState 为 undefined.

因此,判断当前是否处于 navigating 即正在导航,只需要从 store 里,检查 nextState 是否为空就行了。

发生的时序如下:

Success case

  • ROUTER_REQUEST
  • ROUTER_NAVIGATION
  • ROUTER_NAVIGATED

Error / Cancel case (with early Navigation Action Timing):

  • ROUTER_REQUEST
  • ROUTER_NAVIGATION
  • ROUTER_CANCEL / ROUTER_ERROR

Error / Cancel case (with late Navigation Action Timing):

  • ROUTER_REQUEST
  • ROUTER_CANCEL / ROUTER_ERROR
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。