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

时间:2020-09-03 13:22:26

标签: javascript reactjs react-native

我用这种方法尝试过

useEffect(() => {
    async function getUserData() {
      var userData = await firebase.firestore().doc("ingredients/" + user.uid).get();
      var labels = []
      userData.data().ingredients.forEach(ingredient => {
        labels.push(ingredient.label)
      })
      setUserIngredients(labels)
      setUserRecipes(userData.data().recipes)
    }
    getUserData()
    fetchRecipes(userIngredients)
  }, [])

,但是当我使用该应用程序时无法加载,我需要先将文件保存在计算机上,然后再获取数据。我正在使用expo调试智能手机上的应用程序。我希望它能够在我进入屏幕或启动我的应用程序时获取数据

2 个答案:

答案 0 :(得分:0)

您可以在获取数据时使用加载程序,并在获取数据时将其隐藏! also 如果您想在渲染屏幕之前就立即获取数据,那么如果您真的想要它,那么在自定义构造函数中进行数据获取就不是一个好方法!

  const [constructorHasRun, setConstructorHasRun] = useState(false);

并在此构造方法中调用提取API

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

希望您希望得到帮助!

答案 1 :(得分:0)

对于这些情况,我建议将数据保存在Redux状态有助于您的应用看起来快速,并且可以在需要时访问它。 另外,如果您不使用Redux,则可以将数据保存在SQLite中,因为它似乎是关于配方的数据,并可以在初始屏幕中更新数据。 那只是另一个解决方案...