2017-10-28 127 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] } }