2017-01-11 9 views
15

Ich habe gelernt, Redux und ein Teil, ich bin unklar, ist, wie mache ich eine Entscheidung zwischen react state vs redux speichern und dann Aktionen zu versenden. Von meiner bisherigen Lektüre her sieht es so aus, als könnte ich den React-Status anstelle des Redux-Stores verwenden und trotzdem die Dinge erledigen. Ich verstehe die Trennung von Bedenken mit der Verwendung von Redux-Shop und nur 1 Container-Komponente und der Rest davon als zustandslose Komponente, aber wie mache ich die Entscheidung, wann React State Vs Redux Store zu verwenden, ist mir nicht sehr klar. Kann mir bitte jemand helfen?Wann wähle ich React State Vs Redux Store

Danke!

+1

Dies ist ein häufiges Dilemma für Menschen, die React Redux betreten. Aber ich empfehle, den Unterschied zwischen Anwendungsstatus und Komponentenstatus zu verstehen. – semuzaboi

+0

Dan Abramov (Autor von Redux) [hat das bereits beantwortet] (https://github.com/reactjs/redux/issues/1287). – totymedli

Antwort

20

Wenn der Staat muss nicht mit geteilt werden andere Komponenten, oder der Zustand muss nicht beibehalten werden, wenn die Komponente ausgehängt wird, dann können Sie sie einfach in den Status der Komponente einfügen.

Sie können denken, dass der Redux-Speicher die Front-End-Datenbank ist, wenn Sie etwas wie Produktdaten von einer API abgerufen haben, dann ist der Redux-Speicher der richtige Ort; Wenn Sie eine Dropdown-Komponente haben, die eine isOpen-Prop enthält, dann kann das übergeordnete Element dieses Dropdowns einfach dropdownIsOpen als Komponentenstatus beibehalten.

Für weitere Informationen, hier ist die Antwort von Dan: https://github.com/reactjs/redux/issues/1287

auch gesagt, Sie

nur 1 Container-Komponente und der Rest davon als staatenlos Komponente

Dies ist falsch . Sie können mehrere Containerkomponenten haben. Eine Container-Komponente kann auch eine andere Container-Komponente enthalten.

+0

Ja.Siehe auch diese Antworten aus der Redux-FAQ: http://redux.js.org/docs/faq/OrganizingState.html#organizing-state-only-redux-state, http://redux.js.org/docs/faq /ReactRedux.html#react-multiple-components. – markerikson

0

Sie haben absolut Recht. Redux (und Flux-Architektur im Allgemeinen) sind nur Formalismus-Tools, die beim Erstellen großer Apps helfen. Sie sind überhaupt nicht notwendig.

Es gibt tatsächlich ein interessanter Beitrag namens Sie müssen möglicherweise nicht redux von Dan Abramov, der Schöpfer von redux, dass Sie eine bessere Antwort geben könnte, als ich es tun: https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367#.7093fm1z8

0

Von Buch:

Zunächst einmal sollen wir immer im Auge behalten, dass nur die minimale Datenmenge benötigt sollte in den Zustand versetzt werden. Zum Beispiel, wenn wir eine Beschriftung ändern müssen, wenn eine Schaltfläche geklickt wird, sollten wir den Text der Beschriftung nicht speichern, aber wir sollten nur ein boolesches Flag speichern, das uns sagt, ob die Schaltfläche geklickt wurde oder nicht. Zweitens sollten wir dem Status nur die Werte hinzufügen, die wir aktualisieren möchten, wenn ein Ereignis passiert und wir die Komponente erneut rendern möchten. Eine andere Möglichkeit, herauszufinden, ob der Staat der richtige Ort ist, um Informationen zu speichern, ist zu überprüfen, ob die Daten, die wir persistieren, außerhalb der Komponente selbst oder von ihren Kindern benötigt wird. Wenn mehrere Komponenten die gleichen Informationen verfolgen müssen, sollten wir in Erwägung ziehen, auf Anwendungsebene einen Zustandsmanager wie Redux zu verwenden.