2016-04-15 13 views
0

In Bezug auf sauber reagieren Anwendungsdesign, bin ich mir sicher, wie Anwendungseinstellungen zu Modulen übergeben werden, die nicht Teil der Komponentenstruktur sind.So übergeben Sie die Anwendungseinstellungen zum Speichern

z. Ich verbinde mich mit einer REST-API und muss daher den Hostnamen an die Komponenten weitergeben, aber auch an den Speicher - ich verwende Reflux.

Das Übergeben der Einstellungen an Komponenten kann leicht über Kontexte erreicht werden, aber da der Speicher nicht Teil davon ist, was ist der sauberste Weg?

Bisher halte ich diese Ansätze:

  • die Einstellung von der Komponente der Aktion Übergeben, zu, dass ich es auf jedem Geschäft Hörer empfangen.
  • einige DI-Container verwenden, die in meinem index.js initialisiert und kann in meinem Speicher

Beide scheinen nicht für mich als ideal eingesetzt werden. Alle Hinweise geschätzt!

Antwort

1

In den meisten Fällen sollten Sie die Anwendungseinstellungen nicht im Speicher behalten.

Sie sollten über Ihre Anwendung wie eine Funktion denken, die den Status als Parameter empfängt und die Ansicht zurückgibt. Änderungen im Anwendungsstatus (normalerweise) führen zu Änderungen in der resultierenden Ansicht. Flux Stores sind die Art, wie du diesen Zustand hältst. Der API-Hostname ist nicht der Inhalt, von dem Sie erwarten, dass er sich auf Ihre Anwendung auswirkt. Es ist nur eine Informationsnutzlast, die Ihre App wissen muss, um richtig zu funktionieren (sagen Sie Konfiguration, nicht die Einstellungen). Also sollten Sie es als Informationsnutzlast behalten. Modul, Klasse, globale Variable, irgendeine Art von DI, Sie können alles in Betracht ziehen, mit dem Sie arbeiten können.

Ich normalerweise erstellen separate Modul Exportieren von Objekt mit allen Konfigurationen. Etwas wie:

const config = { 
    api: { 
    hostname: 'localhost', 
    port: 3000 
    } 
    // ... 
}; 

export default config; 

Und dann nur importieren. Etwas wie:

import config from "../config"; 

const api = new API(config.api); // just for example 

Aber wenn Sie wirklich mit irgendeiner Art von Einstellungen arbeiten müssen, die UI beeinflussen können (ein Beispiel ist Verzögerung Popup zu zeigen; es beispielsweise noch besser sein können, wenn wir die Änderung dieser Verzögerung betrachten auf Benutzers abhängig Aktionen) sollten Sie Settings speichern und damit arbeiten wie mit einem normalen Flux-Speicher (Abonnieren von Änderungen, Ändern mit Aktionen usw.).

+0

Danke für Ihre Gedanken! Ich stimme zu, dass die Konfiguration kein Zustand sein sollte. Aber nach den Ideen der funktionalen Programmierung möchte ich die Konfiguration in den Laden einbringen, nicht aus irgendeinem äußeren Kontext importieren, der es unter anderem unmöglich machen würde zu testen. Daher denke ich, dass die Abhängigkeitsinjektion die beste Option sein wird. – schneck

Verwandte Themen