[英]Firebase onAuthStateChanged always returning undefined
我一直在尝试创建一个 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
}
});
}
您的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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.