2017-06-26 5 views
0

Ich versuche, eine neue Charge von Produkten durch eine Aktion zu holen und dann den Zustand mit der neuen Charge ersetzen, aber es fügt es nur auf das Array ...Reagieren Redux Zustand nicht ersetzen

Hier mein Minderer ist für Steuerung des Zustandes:

const initialState = { 
    fetching: false, 
    fetched: false, 
    Brands:[], 
    Markings:[], 
    Products: [], 
    error: null 
} 

export default function reducer(state=initialState, action=null) { 
    switch (action.type){ 

    case "FETCH_PRODUCTS_PENDING" : { 
     return {...state} 
     break; 
    } 
    case "FETCH_PRODUCTS_REJECTED" : { 
     return {...state} 
     break; 
    } 
    case "FETCH_PRODUCTS_FULFILLED" : { 
     return{ ...state, 
     Products: state.Products.concat(action.payload.data.Products), 
     Brands: action.payload.data.Facets[0].Facets, 
     Markings: action.payload.data.Facets[1].Facets 
     } 
     break; 
    } 
    } 
    return state 
} 

Es ist im Fall erfüllt schief geht .. ich bin nicht sicher, wie diese „... Zustand“ funktioniert, muss ich ein Objekt assign oder etwas tun müssen?

Bei Last ich 52 Produkte, wenn sie versuchen, eine neue Charge verlangen sie es summiert sich so meine this.props.products 104 Artikel ... Ich will es diese Linie

Antwort

2

ersetzen ist der Täter

In diesem Fall alles, was Sie tun möchten, ist das Products Array mit dem einen aus der Aktion zu ersetzen.

So sollte es einfach hier

Products: action.payload.data.Products 

Auf der spread operator für eine schöne Erklärung sein: https://ponyfoo.com/articles/es6-spread-and-butter-in-depth

+0

ich dumm fühle mich jetzt ..: D Danke – Codehiker