Я пытаюсь получить некоторые JSON данные, и я использовал async / await, чтобы остановить выполнение, пока загрузка данных не будет готова. Но React, похоже, полностью игнорирует это и пытается визуализировать компонент. Ниже я написал упрощенный код для дальнейшей проверки, и setTimeout
имитирует задержку вызова API.
console.log('global');
var index ="Data not loaded";
(async function fetchDataAsync(){
console.log('async start');
//mimcs loading data from API calls
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("Data loaded!"), 1000)
});
var index = await promise;
console.log('async end');
console.log(index);
})();
class App extends React.Component {
constructor(props){
super(props);
this.state={
randomIndex:0
}
console.log('constructor');
}
render(){
console.log('render');
return (
<div >
<p>{index}</p>
</div>
);
}
}
Выходные данные показывают Данные не загружены , а консоль показывает ниже
global
asyn c start
конструктор
рендер
asyn c end
Данные загружены!
Так должен работать React или я здесь чего-то не хватает? Что было бы лучшим местом для вызова API, чтобы гарантировать загрузку данных до монтирования компонента. Спасибо