2016-04-21 15 views
0

Ich habe eine sehr allgemeine Frage, aber ich kann nicht eine Richtung für eine gute Lösung, nicht auf Google, Stackoverflow ...Redux speichern allgemeine Daten nicht persistent

Ich habe ein paar Reduzierungen in meiner app reflektieren meine Staatsbaum. Ein "Benutzer" Reducer und ein "Survey" Reducer (macht eine Umfrage App). Aber jetzt möchte ich eine Profilseite für den Benutzer erstellen. Die Antworten auf alle verfügbaren Felder werden natürlich in den "Benutzer" -Laden gehen, aber was ist mit Listenoptionen? Zum Beispiel, wählen Sie Ihr Geschlecht (m/f) oder wählen Sie Ihre Lieblingsvergangenheit ... Irgendwie finde ich, dass diese Optionen nicht im Benutzerspeicher liegen sollten, oder liege ich falsch? Ich habe das Gefühl, dass ich für einen bestimmten Benutzer einen Status haben möchte, der "gender: m" sagt, aber in der App möchte ich "Male" anstelle von "m" anzeigen. Oder mache ich eine große Aufregung aus dem Nichts und sollte ich nur eine große Schlüssel-/Werteliste all dieser Label-/Wert-Dinge behalten und darauf zugreifen?

+1

'' wird nicht den Trick machen? – Kujira

Antwort

1

Wenn sie einfache Attribute wie Geschlecht sind, stimme ich @kujira zu, dass Sie die zugrunde liegenden Werte machen können, wie Sie wollen (wie m für männlich) und dann zeigen sie eine andere Art in Ihrem JSX, wenn das wirklich was Sie ist möchte tun.

Soweit Benutzerattribute in den Users Reducer gehen sollten, ist die Antwort wahrscheinlich ja. Nur weil das Modell viele Attribute haben kann, bedeutet das nicht, dass Sie einen weiteren Reduzierer erstellen müssen. Im Allgemeinen möchten Sie den redux-Status so weit wie möglich normalisieren. Die Normalisierung besagt, dass Eins-zu-Eins-Assoziationen in derselben Tabelle (oder in diesem Fall Reduziererstatus) enthalten sind.

Der einzige Fall, in dem Sie möglicherweise einen anderen Reduzierer haben, ist, wenn Sie im Wesentlichen ein separates Modell haben und die beiden in einer Eins-zu-Viele- oder Viele-zu-Viele-Beziehung miteinander verbunden sind. Wenn es sich um eine Eins-zu-eins-Beziehung handelt oder wenn Sie ein Attribut nur auf bestimmte Werte beschränken wollen, dann sagen die Regeln der Normalisierung, es auf demselben Modell zu halten.

Wenn Sie sich Sorgen darüber, wie beschränke zu erzwingen, Sie könnte einen Scheck in Ihrem Minderer hinzuzufügen, die Ihre App explodiert, wenn ein anderer Wert als m oder f für gender geführt wird, aber das ist eine Art übermäßig defensive Programmierung zu üben . Wenn Sie wirklich das Gefühl haben, dass Sie diesen Weg gehen müssen, ist eine Option zu berücksichtigen Facebook flow Annotationen.