我用这种方法尝试过
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调试智能手机上的应用程序。我希望它能够在我进入屏幕或启动我的应用程序时获取数据
答案 0 :(得分:0)
您可以在获取数据时使用加载程序,并在获取数据时将其隐藏!
also
如果您想在渲染屏幕之前就立即获取数据,那么如果您真的想要它,那么在自定义构造函数中进行数据获取就不是一个好方法!
即
const [constructorHasRun, setConstructorHasRun] = useState(false);
并在此构造方法中调用提取API
const constructor = () => {
if (constructorHasRun) return;
// fetch API
setConstructorHasRun(true);
};
希望您希望得到帮助!
答案 1 :(得分:0)
对于这些情况,我建议将数据保存在Redux状态有助于您的应用看起来快速,并且可以在需要时访问它。 另外,如果您不使用Redux,则可以将数据保存在SQLite中,因为它似乎是关于配方的数据,并可以在初始屏幕中更新数据。 那只是另一个解决方案...