Redux - 减速器与动作的关系

ste*_*eno 6 reducers dispatch reactjs redux

我是新来的反应/ redux.我试图弄清楚redux中的所有部分是如何相互作用的.给我带来麻烦的一件事是理解行动和减速器之间的关系.调用操作时,商店如何知道要使用哪个减速器?它是否完全基于动作类型名称?类型名称必须是唯一的吗?reducer将新状态对象传递给的是什么或者什么,商店还是动作?

据我了解,它是这样的:

  1. store.dispatch(action)被调用
  2. store根据操作类型查找相关的reducer
  3. Reducer克隆当前状态对象,进行更改,将其传回(某处)

Amo*_*mar 8

1:商店如何知道使用哪个减速器 - >这完全基于动作类型.

2:类型名称必须是唯一的吗? - >这不是一个规则.但大多数情况下是的.每个操作都有一个不同的类型名称,并调用相应的reducer.

3:reducer将新状态对象传递给的是谁或者什么,商店还是动作? - > reducer不会在任何地方传递新的状态对象.基本上,它会触发状态更改事件,以响应正在侦听它的所有反应组件.使用新版本的状态重新呈现侦听已更改状态的所有组件,从而更新DOM.


The*_*nke 6

在典型的 Redux 设置中,动作被分派给所有的减速器,由减速器决定他们是否关心该动作。一个常见的模式是 reducer 中的一个开关,它检查 action.type,有它关心的动作的案例和一个只返回当前状态的默认案例,如下所示:

export default (state = false, action) => {
  switch (action.type) {
    case START_LOADING:
      return true;
    case STOP_LOADING:
      return false;
    default:
      return state;
  }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我告诉我的减速器它只关心类型为START_LOADINGor的操作,STOP_LOADING并且在所有其他情况下它应该只返回它的先前状态。

为了更好地理解 Redux(和 Flux),我建议您查看Lin Clark 的Code Cartoons或她的视频,其中涵盖了大部分相同的内容。