2017-10-28 65 views
-1

我有一個Redux商店,包含9個case語句的reducer。其中六個案例涉及在狀態數組中填充數組,處理所述數組的排序,因此沒有自然的方式來拆分減速器,可以將減速器合併爲一個嗎?Redux,何時拆分減速器?

回答

0

是的,可以將減速機作爲一體使用。比方說,如果我有一個用戶reducer,我會考慮拆分reducer,如果它太大無法管理,或者它與用戶無關,這是我的第一個。你只有9個開關盒,應該沒問題。

0

案例陳述的數量並不是決定是否應該拆分縮減器的正確指標。相反,它是你的reducer動作處理程序正在工作的狀態切片的嵌套深度如何。。如果它太深,代碼可能會爆炸。

比方說你有這樣的狀態,形狀:

{ 
    cart: { 
    products: [ {name:"shirt"}, {name:"pants"} ], 
    checkout: false, 
    } 
} 

在單/全球減速的設置,你可能有這樣的動作處理程序:

//reducer.js 
case ADD_CART_PRODUCT: 
    const {newProduct} = payload 
    const {cart: {products}} = state 

    return {...state, cart: {...state.cart, products: [...products, newProduct] } } 

不壞,但是你可以爲影響的動作處理程序分割出狀態切片,將您的代碼縮小至此:

//cartReducer.js 
case ADD_CART_PRODUCT: 
    const {newProduct} = payload 
    const {products} = state //this is actually state.cart from the global perspective 

    return {...state, products: [...products, newProduct] } }