Javascript React Native:如何在渲染屏幕之前立即获取数据?

Javascript React Native:如何在渲染屏幕之前立即获取数据?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我用这种方法试过 useffect(()=>{ 异步函数getUserData(){ var userData=await firebase.firestore().doc(“配料/”+user.uid.get(); 变量标签=[] userData.data().components.forEach(component=>{ 标签.推送(配料.标签) }) SetUserComponents(标签) setUserRecipes(userData.data().recipes) } getU

我用这种方法试过

useffect(()=>{
异步函数getUserData(){
var userData=await firebase.firestore().doc(“配料/”+user.uid.get();
变量标签=[]
userData.data().components.forEach(component=>{
标签.推送(配料.标签)
})
SetUserComponents(标签)
setUserRecipes(userData.data().recipes)
}
getUserData()
获取配方(用户配料)

},[])
您可以在获取数据时使用loader,在获取数据时将其隐藏!
另外
如果您想在渲染屏幕之前立即获取数据,那么如果您真的需要,那么在自定义构造函数中执行数据获取不是一个好方法

i、 e

并在此构造函数中调用fetch API

 const constructor = () => {
    if (constructorHasRun) return;
    // fetch API   
    setConstructorHasRun(true);
  };

希望你需要帮助

对于这些情况,我建议在Redux状态下保存数据,这样可以帮助您的应用看起来很快,并且您可以在需要时访问它。 另外,如果您不使用Redux,您可以将数据保存在SQLite中,因为它看起来像是关于配方的数据,并在启动屏幕中更新数据。
这只是另一个解决方案…

您可以添加加载器,因为您不知道提取数据需要多少时间,并且在提取数据时删除加载器。在渲染之前,我在哪里调用构造函数方法来使用它?const constructor=()=>{if(constructorHasRun)return;else{getUserData();fetchRecipes();setConstructorHasRun(true);};这是我现在的代码,但它不会从数据库中获取成分,也不会在渲染之前获取数据。sry我是新来的,只需将此构造函数放入您的函数组件中,并立即通过
constructor()
调用它。getUserData()函数不会将firebase instant中的成分放入UserComponents中。我怎样才能解决这个问题?
 const constructor = () => {
    if (constructorHasRun) return;
    // fetch API   
    setConstructorHasRun(true);
  };