2016-06-24 5 views
6

Ich glaube, ich bin das Kopieren der Todo ziemlich Zeile für Zeile Tutorial, ich diese Störung erhalte:Warum denkt mein Redux Reducer, dass mein Zustand nicht definiert ist?

Error: Reducer "addReport" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined.

Und hier ist mein addReport Minderer:

const addReport = (state = [], action) => 
{ 
    console.log(state) 
    switch (action.type) { 
    case ADD_NEW_REPORT: 
    return [...state, 
     addReports(undefined, action) 
    ] 
    } 
} 

ich die Logging-Anweisung hinzugefügt und kann überprüfen, dass es ein leeres Array zurückgibt. Wenn Sie den Status auf 1 setzen, werden die gleichen Ergebnisse erzielt. Was vermisse ich?

Antwort

12

Sie vermissen die default des Schaltergehäuses.

default: { 
    return { 
    ...state 
    } 
} 

Redux wird nicht wie ein nettes Kind mitspielen, wenn Sie es vergessen haben!

Oder alternativ können Sie explizit am Ende zurückkehren den Ausgangszustand: If the state passed to the reducer is undefined, you must explicitly return the initial state.

+0

Interessanter diese Antwort hat mir geholfen, weil ich ein Objekt unterging, sondern einfach „Zustand“ in meinem Standard zurück. Mir war nicht bewusst, dass Sie einen Standardzustand im gleichen Format wie den ursprünglichen Zustand senden müssen. Dies scheint nicht der Fall zu sein, wenn der Anfangszustand ein Array oder eine Zeichenkette usw. ist. –

Verwandte Themen