【发布时间】:2023-01-17 22:42:33
【问题描述】:
我正在使用 Node.js v18 和 React v18 构建应用程序,但遇到以下问题。
当他尝试登录但已经登录时,我正在重定向我的用户。问题是在短时间内呈现了登录页面。
AuthContext.tsx
import { User, getAuth, onAuthStateChanged } from "firebase/auth";
import React, { useState, useEffect, createContext, PropsWithChildren} from 'react';
export const AuthContext = createContext<User | null>(null);
export const AuthProvider = (props : PropsWithChildren) => {
const [user, setUser] = useState<User | null>(null);
useEffect(() => {
onAuthStateChanged(getAuth(), (currentUser) => {
setUser(currentUser);
})
}, []);
return <AuthContext.Provider value={user}>{props.children}</AuthContext.Provider>
}
应用程序.tsx
import React, { useContext } from "react";
import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom";
import LoginPage from "./authentication/LoginPage";
import RegisterPage from "./authentication/RegisterPage";
import { AuthContext } from "./context/AuthContext";
import PaymentPage from "./payment/PaymentPage";
export default function App(){
const user = useContext(AuthContext);
function redirect(){
if(user !== null){
return <Navigate to="/pay" />;
}else{
return <LoginPage />;
}
}
return (
<BrowserRouter>
<Routes>
<Route path="/" element={redirect()}/>
<Route path="/register" element={<RegisterPage />}/>
<Route path="/pay" element={<PaymentPage />}/>
</Routes>
</BrowserRouter>
);
}
关于如何解决这个问题的任何想法?
谢谢
【问题讨论】:
标签: node.js reactjs firebase firebase-authentication react-router