Zunächst verstehe ich, dass dies eine mutierte Zustandsänderung ist; Ich weiß Beschämung über mich. Manchmal scheint der richtige Weg nicht der klügste zu sein oder ich weiß es zumindest nicht besser.Redux reducer dynamic key injection
Lassen Sie mich erklären, ich möchte Schlüssel in meinen Zustand injizieren, ohne alten Zustand und neuen Zustand für vordefinierte Elemente zu erstellen und auszutauschen. Ich möchte einfach für eine Weile die Schlüssel injizieren und wenn nicht, dann sind sie sowieso alle gelöscht. Mein Ausgangszustand sieht aus wie
{graphSite: {site: "default", graphBrowser: { graphID: '', graphKey:'' }, browsable:[] }};
mein Minderer wie folgt aussieht ** mit babel ES7 Spread Operator So
case BROWSER: { state.graphSite.browsable[action.id] = action.payload
return {...state}
}
Objekt, das wird funktionieren, aber redux dev Tools leider nicht die Zustandsänderung zeigen, wenn die durchsuchbaren Array zugänglich vielleicht ist das, weil ich gegen den Strich ging, obwohl, wenn ich die Änderungen zu verlängern:
case BROWSER: { state.graphSite.browsable[action.id] = action.payload
return {...state,
graphSite: {...state.graphSite,
graphBrowser: {...state.graphSite.graphBrowser},
browsable: {...state.graphSite.browsable} }
}
}
jetzt durchsuchbar zeigt korrekt in dem Werkzeug, sondern im Idealfall ich das ist die s ame Sache.
Die Frage ist also, was der beste Weg ist, um den Zustand für dynamische Schlüssel zu manipulieren, die nicht im ursprünglichen Speicherzustand sind. Das funktioniert einfach so, als würde ich etwas falsch machen, weil ich den ursprünglichen Zustand manipuliert habe.
Sie mutieren den Zustand selbst. 'state.graphSite.browsable [action.id] = action.payload'. Sie müssen eine tiefe Kopie des Zustands machen und die Kopie mutieren, wie Sie es tun, und dann die Kopie zurückgeben. – xiaofan2406
Ich wollte, dass die Aktions-IDs dynamisch genug sind. Ich muss nicht die möglichen Anfangszustände im Auge behalten.Das Problem ist, dass nichts zu kopieren ist, wenn Sie das Original nicht mutieren und es als das neue zurückgeben. Ansonsten id die normale Objektverteilung und das Stück, das ich ändern möchte. Dies war hauptsächlich nur dem Schlüssel zuliebe, denn wenn dies ein Array war, kann ich die Reihenfolge der asynchronen Aufrufe nicht garantieren – JustDave