【发布时间】:2020-07-02 01:12:02
【问题描述】:
我在身份验证上下文中有以下代码 sn-p,我在其中设置登录详细信息以及上下文中的用户特定详细信息。但问题是代码退出了 useEffect 块,即使我使用异步来完成文档读取。但是代码无论如何都会通过 useEffect 并且在那之后检索用户详细信息。
我想在 useEffect 失控之前阅读文档。
请让我知道我做错了什么。
useEffect(() => {
auth.onAuthStateChanged(user => {
let userDetails : IUser = {
landingPage: "error",
permissions: {
'none' : {
'read' : false,
'write' : false
}
},
role: "none",
shopId: "none"
};
if (user) {
console.log("Read user data now");
(async function some() {
await readDocument("users", user.uid,function (result: IUser) {
userDetails = result;
console.log("Result received in ", result);
});
})();
}
return setState({
...authInitialState,
isAuthenticated: !!user,
isInitialized: true,
permissions: userDetails.permissions,
user: user,
landingPage: userDetails.landingPage
});
});
}, []);
读取文档函数
function readDocument(collection: string, docId: string, callback: any) {
console.log("Going to read:", docId);
db.collection(collection).doc(docId)
.get()
.then(function (doc) {
callback(doc.data());
console.log("Read data", doc.id, " => ", doc.data());
})
.catch(function (error) {
console.log("Failed to write", error);
});
}
【问题讨论】:
标签: reactjs firebase google-cloud-firestore react-hooks