我不知道如何在NextJS中使用他们的路由器API而不是react-router-dom来复制它。
import { Route, Redirect } from "react-router-dom";
import auth from "../../services/authService";
const ProtectedRoute = ({ path, component: Component, render, ...rest }) => {
return (
<Route
{...rest}
render={props => {
if (!auth.getCurrentUser())
return (
<Redirect
to={{
pathname: "/login",
state: { from: props.location }
}}
j
/>
);
return Component ? <Component {...props} /> : render(props);
}}
/>
);
};
export default ProtectedRoute;
这是这样使用的:
<ProtectedRoute path="/form/:id" component={Form} />
2条答案
按热度按时间s5a0g9ez1#
根据Next.js文档,您最好使用
Link
而不是React-router-dom
或任何其他路由器。vyu0f0g12#
如果你认为你可以重构你的组件来达到你想要的结果:
(使用nextjs v13和page router,注意app router router.replace不接受相同的参数)
(注意:我删除了一些参数:“休息”,“ prop ”,并改变了“组件”/“渲染”的孩子)