2016-07-21 8 views
1

Dies ist eher eine Architektenfrage mit react.js.React architecture

Wo würde ich die folgende Geschäftslogik platzieren?

Sobald sich ein Benutzer authentifiziert hat und wir dann Zugriff auf seine Benutzereinheit haben. Ich würde gerne einen Wert für das Benutzerobjekt überprüfen und wenn Null Daten auffüllen würde ich nur auf dem Client bekommen und dann das Objekt patchen. Der gesamte Code, den Sie erhalten, um ein Objekt zu patchen, befindet sich in den alt.js Stores. Aber das ist Geschäftslogik und fühlt sich nicht richtig an, dass es Teil des Ladens ist.

Ich habe eine Reaktionskomponente in Betracht gezogen, die als Komponente auf dem Wurzel-Reaktionsweg eingestellt ist. Aber es fühlt sich nicht an, als wäre es der richtige Ort, da es nichts ausmacht.

Antwort

0

Haben Sie zuvor context verwendet?

Sie könnten eine Kontextkomponente mit einer getUser-Funktion erstellen. Diese Komponente übernimmt die gesamte Geschäftslogik für die Benutzerberechtigung.

Die Schönheit des Kontextes ist, dass es kein Elternteil oder Kind anderer Komponenten sein muss.

Sie importieren einfach den getUser über den Kontext und Sie können die Funktion verwenden. IE jede Komponente, die den Benutzerkontext kennen muss, kann so etwas tun.

componentDidMount() { 
    this.context.getUserInfo((data) => this.setState({ user: data })) 
} 

Ein anderer Anwendungsfall für Context wäre ein Notifier. Ein Notifier muss möglicherweise zufällig in Ihrer App verwendet werden. Wenn Sie ihn als Requisite weitergeben, wäre dies ein Albtraum.

Erstellen Sie es stattdessen als Kontext und importieren Sie es nach Bedarf.

Wenn das klingt wie es nützlich sein kann, werde ich ein Beispiel geben.

Des Weiteren können Sie die react docs

1

Kasse Dieses von Reagieren nicht wirklich ein Anliegen ist, wie du es gesagt hast mehr von einer architektonischen Wahl.

Wie die vorherigen Beiträge geteilt haben, können Sie die React lifecycle-Methoden verwenden. Vielleicht ist ein besserer Ansatz, eine Zustandsverwaltungsbibliothek wie Redux zu verwenden.

Wenn Sie Redux noch verwenden müssen, würde ich es sehr empfehlen! Obwohl es nicht always the best choice ist, scheint es für 99% meiner Anwendungsfälle zu funktionieren!

Viel Glück!

+0

OP verwendet bereits eine Flussmittelimplementierung ... – Maxwelll