2016-07-12 23 views

Antwort

1

Persönlich würde ich einen solchen App-Flow vermeiden, wo die Komponente so viel macht, wie das Holen und Manipulieren der Daten.

Die Hauptidee ist React (data) => (view) eine Funktion (a reine Funktion bevorzugt), die den Blick zurück ..

Dinge wie Abrufen von Daten, die Änderung der Speicher, der Handhabung auth sollte bewegt werden trennen Module und laufen auf einige Aktionen.

Auf diese Weise sind Sie unabhängig von der View-Ebene, so dass Sie Ihre api-Zeug in eckig, Backbone, jquery oder sogar auf dem Server ausführen können.

Ich sehe keine Vorteile auf diese Weise, vielleicht könnten Sie einige einzigartige Verkaufsargumente zu Ihrem Ansatz schreiben, wäre nett.

0

Muster ist völlig in Ordnung. Nicht für jedes E/A-Szenario, aber für den Fall, dass Sie die URL der Ressource kennen, die geladen werden muss vorher zum Rendern. Ich würde es sogar ein bisschen verbessern.

This parameter tatsächlich sieht aus wie zustandslose Funktion Komponente reagieren. Also, verschiebe seine Definition aus dem Render und definiere sie als (zustandslose) Komponente (als Funktion).

Dann sollte this line geändert werden, um jede Komponente zu verbrauchen, nicht nur die Funktion. Außerdem würde ich das Rendern verzögern, bis Ihr AJAX fertig ist. Wie folgt aus:

return this.props.renderComponent({ ...this.state, fetch: this.fetch }) 

->

return this.state.fetching ? <div/> : <this.props.renderComponent {...this.state } fetch={ this.fetch } />; 

Und entfernen try-catch. Nicht benötigt - jetzt werden die Komponenten nur dann gemountet, wenn die Daten bereit sind. Daher können sie annehmen, dass sie ihre Daten synchron haben, und der Datenfluss ist deklarativ. Das wollen wir, nicht wahr?

Welches ist der große Vorteil dieses Musters, und ich sehe keinen vernünftigen Grund, der vermieden werden muss.

Verwandte Themen