我试图根据用户是否登录有条件地路由用户,这是由我的全局状态变量user检查的。我正在尝试将这个react代码实现到Next.js中,但是我得到了一个文档引用错误。我如何能够在这段代码中执行相同的逻辑,但让它面向Next.js呢?本质上,我不想使用BrowserRouter。
import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'
import { useAuthContext } from 'hooks/useAuthContext';
import HomePage from './home';
import ProductPage from './product';
import LoginPage from './login';
import SignupPage from './signup';
export default function IndexPage() {
const { user } = useAuthContext()
return (
<div>
<BrowserRouter>
<div>
<Routes>
<Route
path="/"
element={<HomePage />}
/>
<Route
path="/login"
element={!user ? <LoginPage /> : <Navigate to="/" />}
/>
<Route
path="/signup"
element={!user ? <SignupPage /> : <Navigate to="/" />}
/>
<Route
path="/product"
element={!user ? <ProductPage /> : <Navigate to="/" />}
/>
</Routes>
</div>
</BrowserRouter>
</div>
);
}发布于 2022-10-11 07:25:46
Nextjs有一个基于文件的路由系统。如果您想实现受保护的路由系统,那么最好使用nextjs中间件。(https://nextjs.org/docs/advanced-features/middleware)
发布于 2022-10-11 07:29:54
Next.js解决了这些并发症。如前所述,路由是基于目录的。您可以参考next.js文档这里。
https://stackoverflow.com/questions/74019869
复制相似问题