2017-05-03 113 views
3

試圖將我的單個減速器拆分成不同的減速器combineReducers是爲此目的而提供的便利功能。儘管將狀態限制爲具有用於至少每個第一級別狀態密鑰的減速器的特定狀態。因此,在某些情況下,您必須添加更多需要的縮減器或更改狀態的形狀。Redux:組合式減速器形狀獨立

更具體的假設應用程序的商店是這樣的:

let store = { 
    a: true, 
    b: false, 
    c: {...} 
    d: {...}  
} 

對於上述商店,我需要定義一個減速上述每個按鍵並將它們組合,所以這將是什麼像:

const reducerA = (state, action) => {...} 
const reducerB = (state, action) => {...} 
const reducerC = (state, action) => {...} 
const reducerD = (state, action) => {...} 

const rootReducer = combineReducers({ 
    a: reducerA, 
    b: reducerB, 
    c: reducerC, 
    d: reducerD 
}); 

我想保持reducerC & reducerD處理對國家的各個對象,但我需要有一個共同的減速機a & b該州的關鍵。

如何添加沒有定義這些剩餘的還原劑reducerA & reducerB或添加父對象與普通減速reducerAB根級別狀態鍵值?這可能使用combineReducers還是應該以不同的方式處理所需的行爲?

回答

2

不,combineReducers的預期用例是專門分離維護每個狀態片的邏輯,並委託該工作來分離函數。如果您確實希望ab由完全相同的函數實例進行管理,則需要將它們放在一起(如state.ab.a),或以某種方式使用combineReducers以外的其他名稱。

您可能需要閱讀Redux文檔中的Structuring Reducers - Beyond combineReducers部分,以獲取關於組織還原器邏輯的其他方法的一些討論,以及Redux FAQ question on sharing state between reducers