2016-09-29 6 views
2

Fellow-Ingenieure, ich habe eine Frage in Bezug auf Reaktion-Redux. Ich würde gerne wissen, ob es eine gute/schlechte Übung ist, den Redux-Speicherstatus mit Skripten von Drittanbietern zu teilen. Derzeit verwenden wir Cookies, um Drittanbieter-Skripts Statusinformationen zu geben (nicht sensitive Statusinformationen). Wir wissen jedoch, die Quelle der Wahrheit für die App ist der State Tree/Store. Also, um mit den Kernprinzipien von redux in Einklang zu bleiben, haben Sie irgendwelche Empfehlungen?Sicher teilen Redux-Zustand mit 3rd-Party-Skripte

Hier ist ein Beispiel. Wir haben also einige Legacy-Skripte, die parallel zu unserer react-redux-Anwendung laufen müssen, und sie lesen gerade einige Cookies, bevor sie ausgeführt werden. Angenommen, wir haben einen Cookie namens "username" und den Wert "john". Das 3rd-Party-Skript liest dieses Cookie und wenn der Wert gleich 'John' ist, tut es etwas.

Intern liest/setzt unsere react/redux-Anwendung diesen Cookie mithilfe von Reduzierungen/Aktionen, aber das Skript des Drittanbieters ist nicht reduktiv und muss nur diesen "name" -Wert kennen und auch benachrichtigt werden, wenn es sich ändert.

Ich dachte, dass wir ein reaktives Modul erstellen könnten, das Schichten des Zustandsbaums bereitstellt und sie global im Fenster verfügbar macht.

Es scheint auch, dass die Redux-Uhr-Bibliothek nützlich sein könnte: https://github.com/jprichardson/redux-watch

Idealerweise wollen wir diese 3rd-Party-Anwendungen zu konvertieren und zu folgen, die Mustern bekommen wir für unsere neue reagieren/Redux Anwendung implementiert haben, Aber manchmal sind die Dinge in großen Unternehmen nicht so einfach, also müssen wir die Dinge mit Legacy-Codebasen arbeiten lassen.

Irgendwelche Gedanken?

Antwort

0

Sie benötigen dafür kein Reaktionsmodul. Ihre 3rd-Party-Skripte können einfach in den Laden abonnieren, um Updates zu erhalten:

store.subscribe(() => { 
    const username = usernameFromState(store.getState()); 
    // run the 3rd party code with the username 
}); 

Ich sehe nicht, warum dies kein Problem sein sollte. Ich denke, es ist sogar okay für die 3rd-Party-Skripte, Aktionen an den Laden zu verschicken, wie Sie sagten, der Laden "ist die einzige Quelle der Wahrheit der Anwendung". Und die Skripte von Drittanbietern sind Teil dieser Anwendung.