我目前已經使用 firebase 初始化了一個 React 應用程序。在應用程序中,我使用react-router-dom創建了一個開放的登錄路由和一個私有的Home路由。我的 app.js 看起來像這樣:應用程序.js:import React from 'react'import { BrowserRouter, Switch, Route } from 'react-router-dom'import Login from './pages/Login'import Home from './pages/Home'import PrivateRoute from './utils/PrivateRoute'const App = () => { return ( <BrowserRouter> <Switch> <PrivateRoute exact path='/' component={Home} /> <Route path='/login' component={Login} /> </Switch> </BrowserRouter> )}export default App我使用 onAuthStateChanged firebase 事件監聽器將 currentUser 存儲在上下文中,如下所示:應用程序上下文:import { useEffect, useState, createContext } from 'react'import { auth } from '../utils/firebase'export const AppContext = createContext()export const AppProvider = ({ children }) => { const [currentUser, setCurrentUser] = useState(null) useEffect(() => { auth.onAuthStateChanged(setCurrentUser) }, []) return ( <AppContext.Provider value={{ currentUser }}> {children} </AppContext.Provider> )}我遇到的問題是,當應用程序刷新時,currentUser 最初變為 null,然后 currentUser 的信息會重新加載。當刷新時 currentUser 為 null 時,用戶將從主路由中踢出并重定向到登錄頁面。我想知道是否有人對如何防止這種情況發生有任何建議。
onAuthStateChanged 應用程序刷新時的 Firebase 偵聽器導致私有路由問題
智慧大石
2023-07-14 15:30:33