我一直在尝试创建一个 util 方法,该方法将返回用户对象或用户对象是否存在。如果没有参数,它应该返回一个布尔值,如果有参数“getUser”,它应该返回用户对象,但它总是返回未定义的。这似乎工作了一段时间,但后来我休息了一下,回来时它总是返回未定义的。代码如下
import { getAuth, onAuthStateChanged } from "firebase/auth";
export default function checkAuthState(type?:string){
const auth = getAuth()
onAuthStateChanged(auth, (user) => {
if (user) {
if(!type) return true
if(type === "getUser") return user
else return true
} else {
if(!type) return false
else return false
}
});
}
Your return true
返回一个值到onAuthStateChanged
,这就是您的回调。这onAuthStateChanged
没有做任何具有该价值的事情。
如果您希望有一个在恢复初始用户状态后解决的承诺,您可以使用以下方法来实现:
function checkAuthState(type?:string){
const auth = getAuth()
return new Promise((resolve, reject) => {
const unsubscribe = onAuthStateChanged(auth, (user) => {
if (user) {
if(!type) resolve(true)
if(type === "getUser") resolve(user)
else resolve(true)
} else {
if(!type) resolve(false) false
else resolve(false)
}
unsubscribe();
});
})
}
然后这样称呼它:
checkAuthState().then((result) => {
console.log(result);
})
或者使用时async
/await
:
const result = await checkAuthState();
console.log(result);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)