【发布时间】:2017-03-10 10:16:20
【问题描述】:
我开始了解 Redux 中的 reducer 组合概念,我对如何在 sub-reducer 中设置初始状态感到困惑。
一个类似的问题是this,但它只涉及状态树每个部分的顶级 reducer。
据我了解,每个 reducer 都应该为其负责的状态树部分提供初始状态。
例如,如果我有这样的状态树:
{
dashboard:{
stats:{
sales:23,
purchases:22
},
messages:{
unread:3,
draft:5
},
//...etc
},
//...
}
我有一个用于仪表板的顶级减速器,以及用于stats 和messages 的减速器,应该在仪表板减速器中设置仪表板部件的初始状态,还是在每个部件的减速器中设置,如果是的话,这段代码会是什么样子?
我最初的想法是像这样实现仪表板减速器:
const initialState = {
stats: {},
messages: {},
//...
}
export default function dashboard(state = initialState, action) {
switch (action.type) {
case FETCH_STATS:
case FETCH_STATS_SUCCESS:
case FETCH_STATS_FAILURE:
return {
...state,
stats: stats(state.stats, action)
}
case FETCH_MESSAGES:
case FETCH_MESSAGES_SUCCESS:
case FETCH_MESSAGES_FAILURE:
return {
...state,
messages: messages(state.messages, action)
}
//...any other action cases
default:
const combined = combineReducers({
stats,
messages
})
return {
...state, //for any part without a reducer
...combined
}
}
}
我的推理正确吗?也欢迎任何改进建议。
【问题讨论】:
标签: javascript reactjs redux reducers