React 16.3.0 wurde veröffentlicht und die Kontext- API ist keine experimentelle Funktion mehr. Dan Abramov (der Schöpfer von Redux) schrieb einen guten Kommentar hier darüber, aber es war 2 Jahre als Kontext noch eine experimentelle Funktion.
Meine Frage ist Ihrer Meinung nach / Erfahrung, wann ich React Context über React Redux verwenden soll und umgekehrt?
javascript
reactjs
redux
react-redux
react-context
Alfrex92
quelle
quelle
duix
npm-Paket. Es ist nur ein einfacher State Manager mit Rückrufen, der wirklich einfach zu implementieren ist. Um ganz klar zu sein: Ich bin der Schöpfer.Antworten:
Da Context keine experimentelle Funktion mehr ist und Sie Context direkt in Ihrer Anwendung verwenden können, eignet es sich hervorragend, um Daten an tief verschachtelte Komponenten weiterzugeben, für die sie entwickelt wurden.
Wie Mark Erikson in seinem Blog geschrieben hat :
Redux
ist viel leistungsfähiger und bietet eine große Anzahl von Funktionen, dieContext Api
das nicht bietet, auch wie @danAbramov erwähntEs liegt an Redux, die Implementierung tatsächlich zu aktualisieren, um sie an die neueste Kontext-API anzupassen
Die neueste Kontext-API kann für Anwendungen verwendet werden, bei denen Sie lediglich Redux verwenden würden, um Daten zwischen Komponenten zu übertragen. Anwendungen, die zentralisierte Daten verwenden und API-Anforderungen in Aktionserstellern verarbeiten, die Redux verwenden
redux-thunk
oderredux-saga
noch benötigen, benötigen jedoch Redux. Abgesehen von diesem Redux sind weitere Bibliotheken zugeordnet, mitredux-persist
denen Sie Speicherdaten in localStorage speichern und beim Aktualisieren rehydrieren können. Dies wird von der Kontext-API immer noch nicht unterstützt.Wie @dan_abramov in seinem Blog erwähnt hat, benötigen Sie möglicherweise kein Redux , dieses Redux hat eine nützliche Anwendung wie
Bei diesen vielen Anwendungen ist es viel zu früh zu sagen, dass Redux durch die neue Kontext-API ersetzt wird
quelle
Wenn Sie Redux nur verwenden, um zu vermeiden, dass Requisiten an tief verschachtelte Komponenten weitergegeben werden , können Sie Redux durch die
Context
API ersetzen . Es ist genau für diesen Anwendungsfall vorgesehen.Auf der anderen Seite, wenn Sie Redux für alles andere verwenden (einen vorhersehbaren Statuscontainer haben, die Logik Ihrer Anwendung außerhalb Ihrer Komponenten behandeln, den Status Ihrer Anwendung zentralisieren, verwenden Statuscontainer haben , Redux DevTools verfolgen, wann, wo, warum und wie der Status Ihrer Anwendung ist Wenn Sie Plugins wie Redux Form , Redux Saga , Redux Undo , Redux Persist , Redux Logger usw. verwenden, gibt es absolut keinen Grund für Sie, Redux aufzugeben. Die
Context
API bietet nichts davon.Und ich persönlich glaube, dass die Redux DevTools-Erweiterung ein erstaunliches, unterschätztes Debugging-Tool ist, das es für sich rechtfertigt, Redux weiterhin zu verwenden.
Einige Referenzen:
quelle
Ich bevorzuge die Verwendung von Redux mit Redux-Thunk zum Ausführen von API-Aufrufen (auch unter Verwendung von Axios) und zum Versenden der Antwort an Reduzierer. Es ist sauber und leicht zu verstehen.
Die Kontext-API ist sehr spezifisch für den React-Redux-Teil, wie React-Komponenten mit dem Store verbunden sind. Dafür ist React-Redux gut. Wenn Sie jedoch möchten, können Sie, da Context offiziell unterstützt wird, die Context-API anstelle von React-Redux verwenden.
Die Frage sollte also Kontext-API vs. React-Redux sein und nicht Kontext-API vs. Redux. Auch die Frage ist leicht meinungsbildend. Da ich mit React-Redux vertraut bin und es in allen Projekten verwende, werde ich es weiterhin verwenden. (Es gibt keinen Anreiz für mich, mich zu ändern).
Wenn Sie jedoch erst heute Redux lernen und es nirgendwo verwendet haben, lohnt es sich, die Kontext-API auszuprobieren und React-Redux durch Ihren benutzerdefinierten Kontext-API-Code zu ersetzen. Vielleicht ist es so viel sauberer.
Persönlich ist es eine Frage der Vertrautheit. Es gibt keinen klaren Grund, einen über den anderen zu wählen, weil sie gleichwertig sind. Und intern verwendet React-Redux sowieso Context.
quelle
Die einzigen Gründe, Redux für mich zu verwenden, sind:
Sie benötigen wahrscheinlich nicht die Indirektionsebene für Ihre gesamte App, daher ist es in Ordnung, Stile zu mischen und gleichzeitig den lokalen Status / Kontext und Redux zu verwenden.
quelle
Von: Wann wird Redux verwendet?
quelle