У меня есть компоненты React, которые используют внешний веб-сервис для получения данных для рендеринга. Я хочу, чтобы данные загружались ДО рендеринга, потому что я хочу, чтобы они индексировались поисковыми системами.
Вот моя составляющая:
class AboutPage extends React.Component {
async componentWillMount() {
let response = await EventWS.doSearch();
this.setState({
eventList : response.data
})
}
render() {
/* ... */
}
}
(Я пытался использовать async / await, потому что думал, что это может помочь, но нет).
При попытке загрузить страницу с рендерингом на стороне сервера я получил предупреждение:
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.
Указывает, что setState выполняется ПОСЛЕ завершения componentWillMount.
В моем конкретном случае, как лучше всего справиться с этим? Есть ли простой способ синхронного вызова ajax? Это рекомендуется делать?
Спасибо.
РЕДАКТИРОВАТЬ: я нашел библиотеку, которая позволяет выполнять синхронный вызов: https://github.com/ForbesLindesay/sync-request
Но в нем говорится, что он не очень подходит для производства. Так что я немного разочарован.