Reactjs Redux-减缩器与动作的关系

Reactjs Redux-减缩器与动作的关系,reactjs,redux,dispatch,reducers,Reactjs,Redux,Dispatch,Reducers,我是个新来的反应者。我试图弄清楚redux中的所有部分是如何相互作用的。给我带来麻烦的一件事是理解动作和还原子之间的关系。调用操作时,存储如何知道要使用哪个减速机?它是否完全基于动作类型名称?类型名称必须是唯一的吗?reducer将新状态对象传递给谁或传递给什么对象,存储还是操作 据我所知,事情是这样的: export default (state = false, action) => { switch (action.type) { case START_LOADING:

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

据我所知,事情是这样的:

export default (state = false, action) => {
  switch (action.type) {
    case START_LOADING:
      return true;
    case STOP_LOADING:
      return false;
    default:
      return state;
  }
}
  • 调用store.dispatch(操作)
  • 存储根据动作类型查找相关的减速器
  • Reducer克隆当前状态对象,进行更改,并将其传回(某处)

  • 通常,只有一个减速器负责整个状态

    此减速器可以拆分为不同的较小减速器功能,每个功能负责不同的状态片。例如,你可以这样做,但你也可以用手来做


    如果使用
    combineReducers()
    将为每个调度的操作执行每个reducer函数。然后,他们纯粹根据动作类型决定动作是否应影响其状态切片。如果是,则返回此切片的更新副本。如果其切片不受操作影响,则返回时将保持不变。

    1:存储如何知道要使用哪个减速机 ->这完全基于动作类型

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

    3:reducer将新状态对象传递给谁或传递给什么,存储还是操作?
    ->减速器不会将新状态对象传递到任何位置。基本上,它会触发一个状态更改事件到所有正在侦听它的react组件。侦听更改状态的所有组件都将使用新版本的状态重新呈现,从而更新您的DOM。

    在典型的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;
      }
    }
    
    在这种情况下,我告诉我的reducer它只关心类型为
    START\u-load
    STOP\u-load
    的操作,在所有其他情况下,它应该只返回它以前的状态


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

    谢谢。我现在开始把事情拼凑起来。如果在一个特定的减速器和它的动作之间有一个孤立的关系,那么每次动作发出时,action.type仅与相应的减速器内的案例匹配,而不是与CombineReducer()内的rootReducer表示的所有减速器匹配。请解释一下。提前感谢。