2016-11-09 1 views
1

Ich habe das Gefühl, ich bin so nah dran ... Ich habe eine Aufgabenliste Anwendung, die ich erstelle.React Redux Set Item Complete

Ein Benutzer kann auf eine Schaltfläche mit der Bezeichnung "complete" klicken, um diesen bestimmten Artikel als abgeschlossen zu markieren.

Mein Gedanke ist, wenn der Benutzer auf diese Schaltfläche klickt, um nur den Zustand "completed" auf "true" zu setzen.

Aus irgendeinem Grunde der Text innerhalb des Staates „undefiniert“ aus dem ausgewählten Elemente geändert und ein anderes Element fügt den Zustand, wenn „vollständig“

Hier klicken ist meine Aktion:

export function completeTodo() { 
    return { 
     type: "COMPLETE_TODO", 
     completed: true 
    } 
} 

Hier mein Minderer ist:

case "COMPLETE_TODO": { 
      return Object.assign({}, state, { 
       todos: [{ 
        text: action.text, 
        completed: action.completed, 
        id: getId(state) 
       }, ...state.todos] 
      }); 
     } 

Antwort

0

der folgende Code erstellt neue Array mit einem neuen toDo-Objekt und alle vorherigen todos (also im Grunde sind Sie ein todo zum beginn Hinzufügen ing des Arrays aus vorherigen Zustand):

[ 
    { 
    text: action.text, 
    completed: action.completed, 
    id: getId(state) 
    }, 
    ...state 
] 

Sie sollten alte todo Objekt herauszufiltern:

[ 
    { 
    text: action.text, 
    completed: action.completed, 
    id: getId(state) 
    }, 
    ...state.todos.filter(todo => todo.id !== getId(state)) 
] 
+0

Leider funktioniert das nicht. Das Hauptproblem, das ich habe, ist der Text aktualisiert auf "undefined" und ich bin mir nicht sicher warum. – Filth

0

Ihre COMPLETE_TODO Aktion keinen Text Feld, so dass die Reduzierung auf die undefinierte zuordnet Zustand.

Soweit ich verstehe, möchten Sie nicht die Texteigenschaften der Elemente ändern, wenn sie abgeschlossen sind. Sie können den Text Auftrag vom Reduzierer entfernen.