2017-03-27 4 views
4

In meinen Projekten werden Redux Thunk verwendet, um alle asynchronen Funktionen in Aktionserstellern zu behalten.Wie Redux Thunk und Apollo GraphQL zusammenarbeiten

Jetzt versuche ich hinzufügen Apollo GraphQL in mein Projekt, alles funktioniert gut, außer dass, wenn Mutationen in meine funktionale Komponente und rufen sie dort, es bricht die Redux Thunk-Architektur.

Wie löst man es? Ich nehme an, ich kann neue Methoden für die Erstellung von Aktionen erstellen und die Mutationen in sie einbringen, aber es würde bald zu einem Standard werden und das scheint mir einfach keine gute Lösung zu sein.

Antwort

2

Apollo-Mutationen brechen die reduktive Thunk-Architektur nicht. Wenn Sie Ihre eigenen Reduktionsmittel nach einer Mutation aktualisieren müssen, senden Sie die Maßnahmen dieses Reduktionsmittels innerhalb der then oder catch der Mutation. Apollos graphql Container wurde entwickelt, um asynchrone Redux Middleware (Thunks, Sagas, Epen) zu ersetzen, nicht zu brechen.

Für Apollo Client 1.0

Wenn Sie möchten, können Sie auch Ihre eigenen Reduzierungen auf die gleichen Aktionen, die Apollo Versendungen (APOLLO_MUTATION_INIT, APOLLO_MUTATION_RESULT, etc.) verdrahten. Stellt nur sicher, dass Sie den apollo-Laden mit Ihrem eigenen integriert haben. Siehe http://dev.apollodata.com/react/redux.html.

Update: Migration auf Apollo-Client 2,0

Apollo Client 2.0 die Abhängigkeit von mit redux als Cache (Speicher) entfernt. Wenn Sie in Ihren Reduzierern weiterhin 1.0-Style-Aktionen verwenden möchten, können Sie den folgenden Link verwenden: https://www.npmjs.com/package/apollo-link-redux (Beispielverwendung in der Readme-Datei).

Verwandte Themen