我的我的终极版状态树的心智模式看起来是这样的:如何编写一个带嵌套对象状态减速
{
selectedDepartment: 'Chemistry',
purchasesByDepartment: {
Chemistry: {
purchaseOrders: {
...
},
invoices: {
...
}
},
Biology: {
purchaseOrders: {
...
},
invoices: {
...
}
},
...(another department, etc)
}
}
这里是我的减速器
const purchasesByDepartment = (state = {}, action) => {
switch (action.type) {
case RECEIVE_POS:
return Object.assign({}, state, {
[action.department]: {
purchaseOrders: action.json
// but this wipes out my invoices
}
})
case RECEIVE_INVOICES:
return Object.assign({}, state, {
[action.department]: {
invoices: action.json
// but this wipes out my purchaseOrders
}
})
default:
return state
}
}
可以在每个部门看,我有一个purchaseOrders和一个发票密钥。 我正在尽我所能写我的减速器,使它不会改变我的状态,但我没有运气,因为每个动作当前擦除了另一个键。
我启动了两项操作:RECEIEVE_POS,RECEIVE_INVOICES。
当我的行动RECEIVE_POS被调度时,我可以用购买订单创建一个新的状态,但是这会抹掉我的发票。
当我的行动RECEIVE_INVOICES被调度时,我可以用发票创建一个新的状态,但是这消除了我的订单。
如何编写我的reducer以便我的订单和发票保持在我的状态下?
我喜欢这个答案相结合。看起来我需要花一些时间检查ImmutableJS – Kevin