ngrx:调用reducers函数时是如何调用的?

时间:2017-06-11 05:35:16

标签: javascript angular redux ngrx reducers

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

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

    提前致谢。

2 个答案:

答案 0 :(得分:5)

一张图片胜过千言万语......

enter image description here

enter image description here

来源:Building a Redux Application with Angular2

示例代码:ngrx-todo-app

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

答案 1 :(得分:2)

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

如何知道要调用哪个reducer? 调用所有已注册的Reducer。尝试将console.logs放入所有reducer中,您可以自己查看。

它是否会解析注册到商店的所有Reducer? 的

在这种情况下,可能有多个具有相同名称的操作会发生什么? 如果您有多个具有相同名称的操作,则会对它们进行相同的处理。例如,如果我发送了类型" ADD"使用有效负载3然后调度一个名为type" ADD"有效载荷3也是一样的。

Ngrx并不聪明。我们假设我们有以下减速器:

const redurs = {   博客:BlogReducer,   发布:PostReducer,   评论:CommentReducer }

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

const redurs = {   评论:CommentReducer,   博客:BlogReducer,   发布:PostReducer }

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