如何通过检查 Firebase 中的用户数据来设置 useState

How to set useState by checking User data in Firebase

查询了 Firebase 后,我似乎无法弄清楚如何设置 useState。 我需要 BOX 对除管理员以外的所有人都等于“public URL”。

import { auth } from "../firebase";
...
  const [BOX, setBox] = useState('');
  useEffect(() => {
if (auth.currentUser?.email === "admin@yahoo.com") {
  setBox("https://admin/link");
   } else {
     setBox("https://public/link");
   }
 },[auth]);

错误总是不同的。有时它 returns“...空 link”,有时“网络请求失败”。有时它确实显示了正确的数据,但是当我刷新屏幕时它遇到了其中一个错误。

这是我的 firebase 文件

// Import the functions you need from the SDKs you need
import * as firebase from "firebase";
import 'firebase/firestore';
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries

// Your web app's Firebase configuration
const firebaseConfig = {
...
};

// Initialize Firebase

let app;
if (firebase.apps.length === 0) {
    app = firebase.initializeApp(firebaseConfig);
} else {
    app = firebase.app()
}

const auth = firebase.auth();
const dbFirebase = app.firestore();

export {auth, dbFirebase};

不能在 if 语句中使用 hook...

 const [box, setBox] = useState('');
  
useEffect(() => {
    if (auth.currentUser?.email === "admin@yahoo.com") {
      setBox("https://admin/link");
       } else {
         setBox("https://public/link");
       }
 },[auth]);
  

对于 firebase 9,您需要按如下方式配置它:

import { initializeApp } from 'firebase/app'
import { getAuth } from 'firebase/auth'

const firebaseConfig = {...}

initializeApp(firebaseConfig)

export const auth = getAuth()