我正在尝试获取一些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>
);
}
}
输出显示未加载数据,控制台显示如下
全局
异步启动
构造函数
渲染
异步结束
数据已加载!
这是React应该如何工作的,还是我在这里丢失了一些东西?放置API调用的最佳位置是什么,以保证在组件安装之前就可以加载数据。 谢谢