2017-06-20 1 views
0

Sagen wir, ich habe einen redux Zustand Baum wie folgt aus:Redux - wenn eine Ressource von einem anderen abhängt, wie sie aktualisiert werden entsprechend

{ 
    user: null, 
    purchases: [], 
} 

Die Einkäufe gehören zu einem Benutzer, so will ich immer die Einkäufe aktualisieren, wenn Der Benutzer wird aktualisiert (obwohl Einkäufe auch zu anderen Zeiten aktualisiert werden können).

Wie geht man vor, um die Käufe auf dem neuesten Stand zu halten, wenn sich der Benutzer ändert? Ich könnte vielleicht ein Update der Käufe innerhalb des Aktionserstellers für das Update an den Benutzer versenden, aber dann sehe ich das Hinzufügen von Versendungen zum fetchUser-Aktionsersteller jedes Mal, wenn ich eine Ressource hinzufüge, die vom aktuellen Benutzer abhängt und redundant erscheint.

Der Code für meine aktuelle Aktion Schöpfer ist unter (beachten Sie, dass ich thunk Middleware verwenden):

Aktion Schöpfer zum Holen der user:

export const fetchUserSuccess = user => ({ 
    type: FETCH_USER_SUCCESS, 
    user, 
}); 

export const fetchUserFailure =() => ({ 
    type: FETCH_USER_FAILURE, 
}); 

export const fetchUser =() => { 
    return dispatch => { 
    return getLoggedInUser(resp => { 
     const { user } = resp; 
     return (
     user 
      ? dispatch(fetchUserSuccess(user)) 
      : dispatch(fetchUserFailure()) 
    ); 
    }); 
    } 
}; 

Aktion Schöpfer für die purchases holen:

export const fetchPurchasesSuccess = purchases => ({ 
    type: FETCH_PURCHASES_SUCCESS, 
    purchases, 
}); 

export const fetchPurchasesFailure =() => ({ 
    type: FETCH_PURCHASES_FAILURE, 
}); 

export const fetchPurchases = user => { 
    return dispatch => { 
    return getPurchases(user, resp => { 
     const { purchases } = resp; 
     return (
     purchases 
      ? dispatch(fetchPurchasesSuccess(purchases)) 
      : dispatch(fetchPurchasesFailure())); 
    }); 
    } 
}; 
+0

Erhalten Sie in der 'fetchPurchases' Antwort irgendwelche'Kauf'-Daten? – JoseAPL

Antwort

0

Ich denke, Sie müssen Benutzer mit Kaufdetails übergeben.

1

Ihr Einkäufer Reducer könnte auf bestimmte Aktionstypen eines Benutzers "hören", wie z. FETCH_USER_SUCCESS und dann diese Ressource direkt dort aktualisieren.

Entschuldigung für mein Englisch.

Verwandte Themen