【发布时间】:2020-09-08 19:09:13
【问题描述】:
我正在尝试从 userRef 获取数据并使用它对另一个文档(例如:自行车)进行另一个异步调用,然后在页面上呈现该自行车文档
现在在主屏幕函数中,userDetailslog 打印 {"_U": 0, "_V": 0, "_W": null, "_X": null}。我假设是因为它在返回数据之前被触发。
关于如何更好地构建它以将适当的数据打印到 HomeScreen 的想法?
感谢任何帮助
const userData = async () => {
const user = auth().currentUser;
var userRef = firestore().collection('users').doc(user.uid);
try {
var doc = await userRef.get();
if (doc.exists) {
console.log(doc.data()); // Prints Perfectly
return doc.data();
} else {
console.log('No such document!');
}
} catch (error) {
console.log('Error getting document:', error);
}
};
const HomeScreen = () => {
const userDetails = userData(); //
useEffect(() => {
console.log(userDetails); // Doesn't print here
}, [userDetails]);
const navigation = useNavigation();
return (
<View>
<Text>Home Screen</Text>
<Button title="logout" onPress={logout} />
</View>
);
};
【问题讨论】:
-
异步函数总是返回一个承诺。函数的调用者需要通过等待它或通过调用
then来处理该承诺,以便获取其中的数据。
标签: javascript reactjs firebase async-await