与仅使用 Angular 2 路由器相比,了解 ngrx router-store 项目的目的

2024-02-10

我参考的是路由器存储 ngrx 项目 (https://github.com/ngrx/router-store https://github.com/ngrx/router-store).

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

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

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

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

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

另外,当 Angular 2 路由器 html 链接(例如)时,ngrx 路由器存储会发生什么情况?<a routerLink="/heroes"被点击了?

更一般地说,有人可以解释一下 ngrx router-store 项目与使用普通 Angular 2 路由器相比实现了什么吗?

或者换句话来说,除了 Angular 2 路由器之外,ngrx router-store 还带来了什么?

Edit:关于 ngrx 的一个有趣的信息和示例来源当然是 ngrx 示例应用程序(https://github.com/ngrx/example-app https://github.com/ngrx/example-app).

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

仅供参考,以下是示例应用程序中有关路由器商店的注释:

@ngrx/router-store 使存储中的路由器状态保持最新,并且 使用存储作为路由器状态的单一事实来源。


The @ngrx/router-store https://github.com/ngrx/router-store存在,因此商店有可能成为单一事实来源 http://redux.js.org/docs/introduction/ThreePrinciples.html#single-source-of-truth应用程序的路由状态。

如果没有它,应用程序状态(当前路由)将不会在商店中表示。这意味着使用时间旅行调试DevTools http://zalmoxisus.github.io/redux-devtools-extension/这是不可能的,因为商店中不会有代表路线的状态,也不会有代表路线变化的动作。

The router-store不取代 Angular 路由器;它只是为路由操作和路由器本身连接监听器。

当您使用以下命令发出路由操作时go动作创造者 https://github.com/ngrx/router-store#navigation-with-a-new-state-into-history, a "[Router] Go"包含指定路径的操作被听到router-store然后调用相应的路由器方法。当。。。的时候router-store从路由器听到路由已更改,它会发出"[Router] Update Location"表示路由更改的操作,该操作会看到存储中的路由器状态已更新。

如果,而不是使用go动作创造者,一个routerLink用于实现路线改变,router-store将听到变化并发出"[Router] Update Location"将看到商店的路由器状态更新的操作。

因此,无论路由是通过操作还是更传统的链接更改,存储始终包含路由器状态。

随着"[Router] Update Location"表示路由更改的操作,您可以通过 DevTools 撤消所述路由更改 - 如果存储中未表示路由器状态,则这是不可能的。

如果您还没有使用过 Redux DevTools,我建议您检查一下:

  • Redux DevTools 扩展 http://zalmoxisus.github.io/redux-devtools-extension/
  • @ngrx/store-devtools https://github.com/ngrx/store-devtools
  • @ngrx/存储日志监视器 https://github.com/ngrx/store-log-monitor
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与仅使用 Angular 2 路由器相比,了解 ngrx router-store 项目的目的 的相关文章

随机推荐

  • Autohotkey:重新映射 Win 键 - 单独按下时

    由于疯狂的笔记本电脑键盘布局和无法映射 Fn 组合 我想做一些重新映射 我想使用 LWin 键作为修饰符 例如 LWin Right gt End 等 它工作得很好 但是 我想在单独按下并释放时停止 LWin 以调出 Windows 菜单
  • 如何在 javascript 正则表达式匹配中将多个匹配 (/g) 与反向引用结合起来

    当使用 g 获取多个匹配 和括号 获取反向引用 时 我对正则表达式匹配返回的数组感到困惑 我不清楚如何获取反向引用 因为匹配数组的下标似乎引用了多个匹配项 而不是反向引用 例如 string abc bcd cde re2 a z p ne
  • MySQL Group By 自定义时间戳

    我想从按日期分组的数据库中获取结果 生成的元组应按日期分组 日期范围为上午 5 点到凌晨 5 点 换句话说 截止时间应该是凌晨 5 点 而不是午夜 12 点 我可以GROUP BY DAY timestamp 按正常日期分组 但如果我必须改
  • Pandas 从日期类型列获取星期几

    我正在使用 Python 3 6 和 Pandas 0 20 3 我有一列已从日期时间转换为日期类型 我所需要的只是日期 为了便于使用 我将其作为派生列 但我希望通过一周中的某一天的计算来进行一些进一步的操作 我可以从日期时间类型获取星期几
  • 更改 MKOverlayView 的 MKOverlay 坐标

    我在地图上有一个叠加层 我想更改其坐标 为了无缝地做到这一点 我将调用设置需要显示地图矩形 http developer apple com library ios documentation MapKit Reference MKOver
  • 如何增加BottomNavigationView的宽度以填充屏幕

    如何增加 BottomNavigationView 菜单的宽度 以下是当前场景 我无法增加整个屏幕的宽度 Menu xml
  • MySQL 日期时间 <-> Java 日期

    我使用 Hibernate 并且 MySQL 数据库中有一个日期时间 现在我想将 java util Date 的日期 时间存储到数据库中 所以我可以写 SimpleDateFormat df new SimpleDateFormat yy
  • 如何将 ArangoDB 嵌入桌面应用程序

    我想在我的应用程序中嵌入一个图形数据库 适用于 Windows Linux 和 MAC 我将搜索范围缩小到 ArangoDB 和 OrientDB 我能够让嵌入式 OrientDB 工作 但我仍然想尝试 ArangoDB 来做出明智的决定
  • 元组结构构造函数抱怨私有字段

    我正在开发一个基本的 shell 解释器来熟悉 Rust 在处理 shell 中存储挂起作业的表时 我遇到了以下编译器错误消息 error cannot invoke tuple struct constructor with privat
  • 请确认:Windows Workflow Foundation 现在是一匹值得支持的好马吗?

    我们正在为一家端到端使用 Microsoft 产品的公司选择工作流程解决方案 鉴于 WF4 的消息 它似乎本质上是对以前版本的重写 支持当前版本是明智之举还是我们应该寻找其他地方 即 当前版本是否太糟糕以至于我们不明智地尝试使用它 Haii
  • TensorFlow 和 Numpy 之间的不同结果

    我有以下代码片段 许多西格玛矩阵是由神经网络生成的 并且这些矩阵必须是正定的 所以这是在调试功能中检查的 奇怪的是 Sigma2 没有给出 LinAlgError Matrix is not Positive Defined Error 而
  • JavaScript 用回调替换 - 性能问题

    在 JavaScript 中 您可以在正则表达式字符串替换操作中定义回调处理程序 str replace str 123 etc replaceCallback 假设您有一个字符串和替换的查找对象 var lookup str1 repl1
  • 永远等待 启动

    我无法再在模拟器或 iPhone 上运行我的程序 它编译得很好 没有任何问题 但后来我收到消息 等待启动 它永远发生 这种情况只发生在一个项目中 我终于通过使用 xproj 文件的备份解决了这个问题 问题出在 xproj 文件中 不过 我不
  • Linux 上的 pthread 执行

    我开始在 Linux 上进行 pthread 编程 在第一个程序中我完全感到困惑 下面是我正在运行的程序 include
  • 单击 JButton 时如何删除 JTable 中的当前行?

    我有很多行JTable每行都有删除按钮 我想在单击该行的删除按钮时删除当前行 我怎样才能做到这一点 private JButton button public MyTableButtonEditor1 button new JButton
  • MySQL:使用另一个表中的值作为列别名?

    我们有一张非常时髦的表格 我试图从中得到一个描述性的结果集 该表存储紧密相关但不同的数据类型集合 并且有意义的列 名称 存储在单独的表中 我认为展示比解释更容易 一个简化和抽象的例子 CREATE TABLE IF NOT EXISTS s
  • Xrm 在 Dynamics CRM 2011 中未定义

    当我创建 js 代码时 我似乎无法让 Xrm 变量工作 是否有我需要包含的库或我需要先运行的函数 我是否需要确保正确引用 ClientGlobalContext js aspx 我处于 C 心态 只是想知道是否有任何类型的 include
  • 创建自定义累积总和,计算给定位置列表及其顺序的下游数量

    我试图想出一些代码 基本上可以计算其下方位置的累积值 采用累积总和几乎可以完成此任务 但某些位置对相同的下游点有贡献 此外 最上游的点 或起始点 不会有任何贡献值 并且可以在最终的累积 DataFrame 中保留其起始值 假设每个站点都有以
  • 配置 nginx 发出后台请求

    我正在构建一个应用程序 需要对 api 数据组合使用情况进行一些分析 下面是我的 nginx 配置 location r rewrite r http localhost 3000 sample route1 1 redirect post
  • 与仅使用 Angular 2 路由器相比,了解 ngrx router-store 项目的目的

    我参考的是路由器存储 ngrx 项目 https github com ngrx router store https github com ngrx router store 我不清楚如何使用这个项目 例如 让我们从项目文档中获取以下示例