我正在学习Redux之后获得一些React的基本概念,我正在观看来自Wes Bost的Learn Redux视频系列,这是一个了不起的资源!
我有下一个问题,在该教程中我们有一个商店:
评论
假设商店的每个“部分”都应该有一个“reducer”,所以我们还有“comments”和“posts”缩减器,它们在index reducer中与combineReducers合并。到目前为止一切都还可以,但我的问题来了:
假设我有评论减速器,它接收状态和动作,但它们的状态与state.comments匹配。 Posts reducer也是如此,状态形状如何与状态的特定部分匹配?
这是来自Redux doc:
请注意,这些reducer中的每一个都在管理自己的全局状态部分。每个reducer的state参数都不同,并且对应于它管理的状态部分。
答案 0 :(得分:1)
这是Redux设计的一部分。减速器管理自己的状态。根减速器结合了各个减速器的状态。 Redux中只有一家商店,其处于合并状态。
答案 1 :(得分:1)
combineReducer
做了那部分魔术。
这将调用传递的所有reducers对象中的每个reducer,并构建一个具有相同形状的状态对象。
根据他们的documentation:
As your app grows more complex, you'll want to split your reducing
function into separate functions, each managing independent parts of the
state.
The combineReducers helper function turns an object whose values are
different reducing functions into a single reducing function you can pass to
createStore.
答案 2 :(得分:0)
减速器的行为基于action.type
。根据{{1}},您可以更改状态的一部分。他们不自动知道。例如:
type
答案 3 :(得分:0)
如果你问 Redux如何将reducer与状态的一部分匹配,你可以在这里找到解读Redux CombineReducers代码的答案:
https://github.com/reactjs/redux/blob/master/src/combineReducers.js
在第147行附近,您会看到每个reducer都应用于其状态键。