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.
Entschuldigung, können Sie bitte das genaue Muster in Ihren Worten erklären, aber Code .. Dann würde ich gerne die Idee & Code überprüfen – webdeb