我的我的終極版狀態樹的心智模式看起來是這樣的:如何編寫一個帶嵌套對象狀態減速
{
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