2017-11-10 1 views
0

Ich werde in localstorage einige Daten speichern, aber nur nach Aufruf von UPDATE_POST Aktion. Jetzt bin ich anwenden lokalen Speicher in index.js über:Speichern Sie Daten im lokalen Speicher nach der entsprechenden Aktion. Reagieren & Redux

und es speichert Daten im lokalen Speicher für jede Sekunde. Aber mein Ziel ist, es nur nach updatePost Aktion zu speichern. Kann ich es mit Middleware erreichen und wie schreibe ich es?

Mein Minderer:

const Post = (state = {}, action) => { 
    switch (action.type) { 
    case 'INIT_POST': 
     ..... some code 
    case 'UPDATE_POST': 
     ... some code 
    default: 
     return state 
    } 
}; 

Meine Aktion:

export const updatePost = (...items) => ({ 
    type: 'UPDATE_POST', 
    items 
}); 
+0

Ist Update eine asynchrone Funktion das Scheitern der asynchron-Funktion zu behandeln? –

+0

Ja, es ist asynchrone Funktion – Rafonix

Antwort

0

I Redux-Thunk für diesen Einsatz (https://github.com/gaearon/redux-thunk) - es lässt Sie Aktion Schöpfer schreiben, die eine Funktion statt einer Aktion zurückkehren - Damit können Sie asynchrone Aufgaben in der Aktion ausführen und dann den Reduzierer drücken.

Mit redux-thunk können Sie eine asynchrone Funktion aufrufen (performSomeAsyncFunction() im Beispiel unten), erhalten Sie die Antwort, befassen Sie sich damit (wie die saveDataToLocalStorage() Dummy-Funktion), dann drücken Sie den Reduzierer, um Ihren Status zu aktualisieren :

export const startUpdatePost = (...items) => { 
    return (dispatch) => { 
    return performSomeAsyncFunction(...items).then((response) => { 
     dispatch(updatePost(...items)); 
     saveDataToLocalStorage() 

    }); 
    }; 
}; 
  • vergessen Sie auch nicht über
Verwandte Themen