Ich verwende redux mit normalizr, um die Antwort vom Server zu normalisieren, im Grunde die Beispiel folgen. Auf diese Weise entities
Reducer ist sehr einfach, nur die Antwort zusammenführen. Das Problem, das ich gerade habe, ist eine Art delete
Operation. Ich habe dieses issue#21 of normalizr repo gefunden, aber konnte noch nicht herausfinden, wie man das löst. Zum BeispielRedux + Normalizr getrennt (gelöscht) Betrieb
Aktueller Stand ist
{
entities:
product_categories: {
...
13: {
...
products: ["1", "2"], <--------------- [i] Current state
...
}
},
products: {
1: {
id: "1"
}
}
}
Die normalisierte Antwort ist
{
...
product_categories: {
...
13: {
...
products: ["1"], <---------------- [2] Normalized result
}
...
}
Wie Sie sehen können, nur das Backend api alle Produkt-IDs zurückgibt, die zu dieser Kategorie gehörte, in dieser Fall "2" ist gelöst. Wenn der Reduzierer "Entitäten" diese Antwort zusammenführt, bleibt "2" immer noch hängen. Im Moment lade ich einfach die Seite neu, aber ich frage mich, ob es einen besseren Weg gibt, mit diesem Fall umzugehen?
In entities
Reducer, ich füge es einfach wie in der realen Welt Beispiel.
return merge({}, state, action.payload.entities);
Dies ist eine wirklich gute Frage. IMO weist es auf einen wesentlichen Fehler in der gesamten Redux + Normalizr-Architektur hin. Sicher, Sie haben eine einzige Wurzel zu sagen, aber es ist nicht genau eine wahrheitsgetreue Darstellung. Die Verwendung von Löschflags ist viel zu eigensinnig. –