2017-10-28 2 views
-1

Ich habe einen Redux-Shop mit einem Reducer bestehend aus 9 Case-Anweisungen. Sechs dieser Fälle befassen sich damit, ein Array in dem Zustand zu bevölkern, in dem sich die weißen drei mit der Sortierung des Arrays befassen, daher gibt es keine natürliche Art, den Reduzierer zu spalten, ist es in Ordnung, den Reduzierer als einen zu verlassen?Redux, wann soll man Reduzierungen spalten?

Antwort

0

Ja, es ist in Ordnung, das Reduzierstück als eins zu lassen. Nehmen wir an, wenn ich einen Reducer für User habe, würde ich mir überlegen, den Reducer aufzuteilen, wenn er zu groß wird, um ihn zu verwalten, oder wenn er nichts mit User zu tun hat und das war mein erster. Sie haben nur 9 Switch Cases und das sollte in Ordnung sein.

0

Die Anzahl der Fallanweisungen ist nicht die richtige Metrik für die Entscheidung, ob der Reduzierer geteilt werden soll. Eher ist es wie tief verschachtelt ist der Zustand Slice, die Ihre Reducer Action Handler auf arbeitet. Wenn es zu tief ist, könnte der Code explodieren.

Lassen Sie uns sagen Sie diesen Zustand Form haben:

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

In einem einzigen/global Minderer-Setup, können Sie diese Aktion Handler:

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

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

Nicht schlecht , aber Sie können eine cartReducer für Aktionshandler abspalten, die diebetrifftstate slice, schrumpfen Sie Ihren Code dazu:

//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] } } 
Verwandte Themen