Ich habe React-Komponenten, die externen Webservice verbraucht, um Daten zum Rendern zu erreichen. Ich möchte, dass die Daten vor dem Rendern geladen werden, weil ich möchte, dass sie von Suchmaschinen indiziert werden.REST-Ressourcen vor dem Rendern in React.js konsumieren
Hier ist meine Komponente:
class AboutPage extends React.Component {
async componentWillMount() {
let response = await EventWS.doSearch();
this.setState({
eventList : response.data
})
}
render() {
/* ... */
}
}
(Ich habe versucht, async/await zu verwenden, weil ich dachte, es könnte helfen, aber nein).
Beim Versuch, die Seite mit Server-Rendering zu laden habe ich die Warnung:
Warning: setState(...): Can only update a mounting component. This usually means you called setState() outside componentWillMount() on the server. This is a no-op. Please check the code for the FluxContainer(AboutPage) component.
anzeigt, dass die setState getan wird, nachdem der componentWillMount beendet ist.
In meinem speziellen Fall, was ist der beste Weg, dies zu erreichen? Gibt es eine einfache Möglichkeit, einen Ajax-Aufruf synchron zu machen? Ist es empfehlenswert, dies zu tun?
Vielen Dank.
EDIT: Ich habe eine Bibliothek gefunden, die synchronen Anruf erlauben: https://github.com/ForbesLindesay/sync-request
Aber es heißt, dass es für die Produktion nicht gut geeignet ist. Also bin ich ein bisschen enttäuscht.
Dieses Ticket behandelt asynchrone KomponenteWillMount https: // github .com/Facebook/reagieren/Ausgaben/1739. Vielleicht können Sie dort Zeiger finden – jontro