【发布时间】:2022-01-07 14:18:22
【问题描述】:
React: 17.0.2
React Router: 6
示例:用户通过身份验证并尝试通过 URL 访问“/page2”。他们应该通过 PrivateRoute 流并到达“/page2”。
代码:
const PublicRoutes = () => {
const { auth } = useAuth()
return auth ? <Navigate to={'/home'} replace /> : <Outlet />
}
const PrivateRoutes = () => {
const { auth } = useAuth()
return auth ? <Outlet /> : <Navigate to={'/signin'} replace />
}
export const Router = () => {
return (
<BrowserRouter>
<Routes>
<Route element={
<PublicLayout>
<PublicRoutes />
</PublicLayout>
}>
<Route path='/' element={<GetStarted />} />
<Route path='/signin' element={<SignIn />} />
<Route path='/signup' element={<SignUp />} />
</Route>
<Route element={
<PrivateLayout>
<PrivateRoutes />
</PrivateLayout>
}>
<Route path='/home' element={<Home />} />
<Route path='/page2' element={<Page2 />} />
</Route>
</Routes>
</BrowserRouter>
)
}
我试过const location = useLocation() 并使用location.pathname,但它给出了一些关于多次重新渲染的错误。即使来自路由器 6 的 auth guide 也不起作用,因为 location.state 为空。
关于我的正品流程的一些信息:
【问题讨论】:
标签: reactjs react-router react-router-dom