我是新来的反应/ redux。我想弄清楚redux中的所有部分如何相互作用。让我陷入麻烦的一件事就是理解动作和减速器之间的关系。当一个动作被调用时,商店如何知道使用哪个减速器?它是否完全基于动作类型名称?类型名称必须是唯一的吗?减速器向谁传递新的状态对象,或者存储器或动作?Redux - 减速机与动作的关系
据我了解,它是这样的:
- store.dispatch(动作)被称为
- 店发现基于动作类型
- 减速克隆当前状态对象相关的减速机,进行更改,将其传回(某处)
我是新来的反应/ redux。我想弄清楚redux中的所有部分如何相互作用。让我陷入麻烦的一件事就是理解动作和减速器之间的关系。当一个动作被调用时,商店如何知道使用哪个减速器?它是否完全基于动作类型名称?类型名称必须是唯一的吗?减速器向谁传递新的状态对象,或者存储器或动作?Redux - 减速机与动作的关系
据我了解,它是这样的:
1:商店如何知道使用哪个减速器 - >这完全基于动作类型。
2:类型名称必须是唯一的吗? - >这不是一个规则。但主要是,是的。每个操作都有一个独特的类型名称,并调用相应的reducer。
3:Reducer将哪个或哪些新状态对象传递给Store或Action? - > Reducer不会在任何地方传递新的状态对象。基本上,它会触发一个状态改变事件给所有正在监听它的反应组件。监听改变状态的所有组件都会重新呈现,并带有新版本的状态,从而更新您的DOM。
通常,只有一个reducer负责完成状态。
该减速机可以拆分成不同的较小减速机功能,每个功能负责不同的状态切片。例如Redux's combineReducers()
utility可以做到这一点,但你也可以手动做到这一点。
如果使用combineReducers()
,每个减速器函数都针对每个调度操作执行。然后,他们纯粹根据行为类型来决定行动是否会影响其状态的切片。如果是,则返回该切片的更新副本。如果它的切片不受该动作的影响,则它将保持不变。
在一个典型的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;
}
}
在这种情况下,我告诉我的减速器只关心类型为START_LOADING
或STOP_LOADING
的动作,而在所有其他情况下,它应该只返回它以前的状态。
为了深入了解Redux(和Flux),我建议您查看Lin Clark或她的video的Code Cartoons,它涵盖了大部分相同的事情。
谢谢。我现在开始把事情整理在一起。 – steveareeno