与仅使用angular 2路由器相比,了解ngrx路由器存储项目的目的

bal*_*teo 48 ngrx

我参考了路由器商店的ngrx项目(https://github.com/ngrx/router-store).

我不清楚如何使用这个项目......

例如,让我们从项目文档中获取以下示例:

store.dispatch(go(['/path', { routeParam: 1 }], { query: 'string' }));
Run Code Online (Sandbox Code Playgroud)

这是否意味着用作角2路由器的替代品:router.navigate(['/path...

...或者我应该仅在某些情况下使用ngrx路由器存储?(如果是那些?)

<a routerLink="/heroes"点击角度2路由器html链接时,ngrx路由器存储会发生什么 ?

更一般地说,与使用普通的角度2路由器相比,有人可以解释一下ngrx路由器商店项目所取得的成果吗?

或者换句话说,除了角度2路由器之外,ngrx路由器商店还带来了什么?

编辑:关于ngrx的有趣的信息和样本来源当然是ngrx example-app(https://github.com/ngrx/example-app).

我发现了对路由器存储的依赖,但我无法找到应用程序中路由器存储的使用位置...

仅供参考,这里是关于路由器商店的示例应用程序中的注释:

@ ngrx/router-store使路由器状态在商店中保持最新,并将商店用作路由器状态的唯一真实来源.

car*_*ant 71

@ngrx/router-store存在,因此,它可能为专卖店是单一数据源的应用程序的路由状态.

没有它,将会有应用程序状态 - 当前路径 - 未在商店中显示.这意味着使用DevTools进行时间旅行调试是不可能的,因为商店中没有表示路线的状态,也没有表示路线变化的动作.

router-store不更换角路由器; 它只是为侦听器连接路由操作和路由器本身.

使用go操作创建程序发出路由操作时,"[Router] Go"会听到包含指定路径的操作router-store,然后调用相应的路由器方法.当router-store从路由器听到路线已经改变时,它会发出"[Router] Update Location"表示路线变化的动作,并且该动作会看到商店中路由器状态的更新.

如果用于实现路由更改而不是使用go动作创建者,则会听到更改并发出将更新存储路由器状态的操作.routerLinkrouter-store"[Router] Update Location"

因此,无论路由是通过操作还是更传统的链接进行更改,商店始终都包含路由器状态.

通过"[Router] Update Location"表示路由更改的操作,您可以通过DevTools撤消所述路由更改 - 如果路由器状态未在存储中表示,则无法实现.

如果您没有使用Redux DevTools,我建议您查看它们:

  • 我们在生产中删除它吗?如果它的用途只是为了帮助DevTools页面转换,或者它可以用于其他任务 (6认同)
  • 此外,您可能有兴趣知道Angular v3路由器基于[`@ngrx/router`](https://github.com/ngrx/router),并且与"@ ngrx"一起构建.队"(http://angularjs.blogspot.com.au/2016/06/improvements-coming-for-routing-in.html). (5认同)
  • 我认为有更多的价值不仅仅是TimeTravel调试.请参阅此Nrwl文章:https://blog.nrwl.io/using-ngrx-4-to-manage-state-in-angular-applications-64e7a1f84b7b#7b4c (3认同)