2016-04-28 17 views
2

Ist es ratsam oder sogar möglich, ein React-Element in den Status eines Redux-Speichers aufzunehmen? Da es ein einfaches Objekt ist, das beschreibt, "was gezeichnet werden sollte", denke ich, sollte es sicher sein, aber dennoch: jede Erfahrung da draußen?Speichern eines React-Elements im Redux-Zustand: Anti-Pattern?

Warum sollte ich so etwas tun? Ich schreibe eine abstrakte React-Komponente, die andere Komponenten einbetten kann, die an anderer Stelle im React-Baum beschrieben sind. Dies würde es ihnen beispielsweise ermöglichen, von den physikalischen Grenzen eines Hardware-beschleunigten CSS-DOM-Knotens, der für die Leistung verwendet wird, zu entkommen.

+0

Ja. Der Staat sollte serialisierbar sein. – zerkms

+1

Tatsächlich sind React-Elemente nicht serialisierbar, weil '$ typeof' ein 'Symbol' enthält. – Florent

Antwort

4

Ja - wie bei vielen anderen ähnlichen Ideen, es ist möglich, aber es ist absolut ein Anti-Muster, weil es die Fähigkeit, bricht Dinge wie Zeit-Reise-Debugging (einer von Redux Kernverkaufsstellen) zu tun. Weitere Informationen finden Sie in der Redux-FAQ unter http://redux.js.org/docs/FAQ.html#organizing-state-non-serializable.

React-Komponentenklassen können nun im internen Status einer React-Komponente beibehalten werden. Dies kann nützlich sein, wenn eine Komponente dynamisch angefordert und nach dem Herunterladen der Implementierung erneut gerendert wird.

+0

Es bricht Persistenz/Hydratation (habe das nicht getestet, da ich es nicht brauche), aber keine Zeitreise. Siehe [diese Geige] (https://jsfiddle.net/yprpq1cu/4/) - kann die Zeitreise innerhalb von jsfiddle nicht überprüfen (Redux DevTools funktioniert dort nicht), aber es funktioniert lokal. –