ngrx:reducers 函数在调用时如何被调用?

ngrx : how the reducers function are invoked, when it is invoked?

我正在尝试使用 ngrx 库来管理我的应用程序的状态。我浏览了许多 ngrx 文档和 git 页。我理解有三个重要的概念:

  1. 商店
  2. 减速机和
  3. 动作

Store 是我们应用程序的单一数据源。因此,对数据的任何修改或检索都是通过 Actions 完成的。我的问题是当一个动作被发送到商店时到底发生了什么?它如何知道要调用哪个 reducer?它是否解析所有注册到商店的减速器?可以有多个同名的动作,在这种情况下会发生什么?

提前致谢。

一图胜千言...

来源:Building a Redux Application with Angular2

示例代码:ngrx-todo-app

演示:Todo App using @ngrx/store and @ngrx/effects

我的问题是,将操作发送到商店时到底发生了什么? 所有注册的减速器都有机会处理这个动作

它如何知道要调用哪些 reducer? 所有注册的减速器都被调用。尝试将 console.logs 放入所有 reducer 中,您可以自己看到。

它是否解析所有注册到商店的减速器?

可以有多个同名的动作,在那种情况下会发生什么? 如果您有多个同名操作,它们将被同等对待。例如,如果我使用负载 3 发送类型 "ADD",然后使用负载 3 发送一个名为类型 "ADD" 的不同操作,那将是同一件事。

Ngrx 没那么聪明。假设我们有以下减速器:

const 减速器 = { 博客:BlogReducer, post:PostReducer, 评论:CommentReducer }

说我派遣'ADD_COMMENT'。基本上 BlogReducer 会首先尝试处理它,然后是 PostReducer,最后是 CommentReducer。排序取决于您如何指定上面的 reducers 对象。所以如果我这样做:

const 减速器 = { 评论: CommentReducer, 博客:BlogReducer, post:PostReducer }

CommentReducer 将是第一个尝试处理 'ADD_COMMENT'.

的人