2017-02-09 4 views
0

Ich erstelle eine gemeinsame modale React-Komponente für meine Anwendung, um eine Vielzahl verschiedener Dinge anzuzeigen. Ich möchte, dass es flexibel genug ist, um sowohl HTML als auch interaktive React-Komponenten anzuzeigen.Reagent-Komponente in einem Redux Reducer speichern?

Ich habe es funktioniert, indem ich die anzeigbare Komponente in meinem Redux Modal Reducer gespeichert habe. Bisher habe ich keine Probleme bekommen.

Hat jemand diesen Ansatz für irgendwelche von vorher genommen? Ich konnte keine Beispiele online finden, daher bin ich mir nicht sicher, ob das eine schlechte Praxis ist. Wenn ja, gibt es einen anderen Weg, den Sie vorschlagen, sollte dies behandelt werden?

Antwort

1

Es kann funktionieren, aber ich denke nicht, dass Sie das wirklich tun müssen. Sie sollten nicht die gesamte Komponente im Geschäft speichern. Speichern Sie nur einfach Zustand, die serialisierbar sein sollte, und übergeben Sie sie als Requisiten an eine Komponente. Die render() Funktion einer Komponente kümmert sich um das Rendern.

Siehe die FAQ von redux:

Kann ich Funktionen, Versprechen oder andere nicht-serializable Artikel in meinem Shop Zustand?

Es wird dringend empfohlen, nur serialisierbare Objekte, Arrays und Primitive in Ihr Geschäft zu legen. Es ist technisch möglich, nicht serialisierbare Elemente in den Speicher einzufügen. Dies kann jedoch dazu führen, dass die Inhalte eines Speichers nicht mehr persistieren und rehydriert werden können und das Debugging von Zeitreisen beeinträchtigt wird.

Wenn Sie mit Dingen wie Persistenz und dem Debuggen von Zeitreisen, die möglicherweise nicht wie vorgesehen funktionieren, einverstanden sind, können Sie auch nicht serialisierbare Elemente in Ihren Redux-Speicher legen. Letztendlich ist es Ihre Anwendung und wie Sie sie implementieren, liegt bei Ihnen. Wie bei vielen anderen Dingen über Redux, seien Sie sicher, dass Sie verstehen, welche Kompromisse damit verbunden sind.

http://redux.js.org/docs/faq/OrganizingState.html#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state

Auch können Sie die Diskussion dieses Themas lesen: https://github.com/reactjs/redux/issues/1793

+0

Vielen Dank für den Einblick. Ich dachte mir, dass es einen besseren, "reduktiven" Weg geben muss, damit umzugehen. Gemäß dem Diskussionsthread ist das Speichern einer statischen ID im Speicher und das anschließende Erstellen eines generischen Komponentenmappers der bessere Ansatz. –

Verwandte Themen