2016-05-03 17 views
0

Also baue ich eine Anwendung in Redux und ich lief auf das Problem in der Redux-Dokumentation, wo meine Ansicht nicht aktualisiert würde, nachdem eine Aktion ausgelöst wurde. Die Dokumentation schlägt vor, dass dies passiert, wenn Sie den Staat mutieren. Das einzige Problem ist, ich verstehe nicht, wie das, was ich tat, eine Mutation in Betracht gezogen wird:Warum löst dieser Reducer keine Anzeigeänderung mit Redux aus?

case AppConstants.UPDATE_ALL_TIMERS: 
    return action.timers 

Das aber funktioniert:

case AppConstants.UPDATE_ALL_TIMERS: 
    let newState = state.map((timer, index) => { 
     return action.timers[index] 
    }); 
    return newState 

Wie kommt es, dass nur der Wert der Rückkehr von Die Handlung als Ihr neuer Staat gilt als mutiert den Staat? Was vermisse ich?

Unten ist die Gesamtheit meiner Reduzierung, die beiden Fälle vor UPDATE_ALL_TIMERS funktionierte gut. Der Reducer wird mit Kombinationsreduzierern verwendet und empfängt nur die Statuszeit des Timers, bei der es sich um eine Anordnung von Objekten handelt.

export default function(state = initialState, action) { 
    switch(action.type) { 
     case AppConstants.ADD_TIMER: 
      let newState = [...state, action.timer]; 
      return newState 
     case AppConstants.UPDATE_TIMER: 
      newState = state.map((timer, index) => { 
       if(index == action.timerID) { 
        const updatedTimer = { 
         ...timer, 
         elapsed: action.elapsed 
        } 
        return updatedTimer 
       } 
       return timer 
      }); 
      return newState 
     case AppConstants.UPDATE_ALL_TIMERS: 
      newState = state.map((timer, index) => { 
       return action.timers[index] 
      }); 
      return newState 
     default: 
      return state 
    } 
} 
+0

Können Sie nach mehr Ihren Minderer und möglicherweise die Aktion Schöpfer auch verändert hat? – markerikson

+0

Ja, ohne mehr Kontext ist nicht klar, warum dies ein Problem wäre. Verarscht etwas mit irgendwelchen "Timer" -Werten? –

+0

bearbeitet, um die Gesamtheit meines Reduzierers hinzuzufügen – hmlee

Antwort

0

Können Sie Ihre Komponente veröffentlichen?

Normalerweise, wenn der Store-Status in Ordnung und gut aktualisiert ist, aber die Komponente nicht wieder rendern wegen tief verschachtelten zugeordneten Eigenschaften.

reagieren-Redux nicht tief Kontrollen tun, um zu überprüfen, ob ein Wert auf tief verschachtelt abgebildeten Objekte

Verwandte Themen