Reactjs Redux-减缩器与动作的关系
我是个新来的反应者。我试图弄清楚redux中的所有部分是如何相互作用的。给我带来麻烦的一件事是理解动作和还原子之间的关系。调用操作时,存储如何知道要使用哪个减速机?它是否完全基于动作类型名称?类型名称必须是唯一的吗?reducer将新状态对象传递给谁或传递给什么对象,存储还是操作 据我所知,事情是这样的:Reactjs Redux-减缩器与动作的关系,reactjs,redux,dispatch,reducers,Reactjs,Redux,Dispatch,Reducers,我是个新来的反应者。我试图弄清楚redux中的所有部分是如何相互作用的。给我带来麻烦的一件事是理解动作和还原子之间的关系。调用操作时,存储如何知道要使用哪个减速机?它是否完全基于动作类型名称?类型名称必须是唯一的吗?reducer将新状态对象传递给谁或传递给什么对象,存储还是操作 据我所知,事情是这样的: export default (state = false, action) => { switch (action.type) { case START_LOADING:
export default (state = false, action) => {
switch (action.type) {
case START_LOADING:
return true;
case STOP_LOADING:
return false;
default:
return state;
}
}
通常,只有一个减速器负责整个状态 此减速器可以拆分为不同的较小减速器功能,每个功能负责不同的状态片。例如,你可以这样做,但你也可以用手来做
如果使用
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表示的所有减速器匹配。请解释一下。提前感谢。