【发布时间】:2020-06-24 08:22:17
【问题描述】:
我正在尝试从 firestore 中的文档“user”中获取“isSeller: true”字段,但一直未定义。最终我意识到 useEffect 中的用户对象通常返回一个承诺 (__proto__: object) 而不是实际的对象。
function StorefrontPage(props) {
const auth = useAuth();
const router = useRouter();
const [user, setUser] = useState({});
const uid = auth.user && auth.user.uid;
useEffect(() => {
uid && getUser(uid).then(currentUser => {
setUser(currentUser);
})
console.log(user);
}, [])
console.log(user);
我第一次运行它时,它会返回我想要的对象,但随后的刷新和页面更改会将 console.log 变成 __proto__ object/promise。我认为将它包装在 useEffect 钩子中可以解决这个问题,但事实并非如此。如何确保它始终返回用户对象而不是承诺?
供参考,getUser函数为:
export function getUser(uid) {
return firestore.collection('users').doc(uid).get().then(user => {
return user.data();
})
}
【问题讨论】:
标签: reactjs google-cloud-firestore react-hooks