簡體   English   中英

Firebase onAuthStateChanged 總是返回 undefined

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM