【发布时间】:2021-11-03 21:24:32
【问题描述】:
我需要有关如何使用 react-router-dom v6 实现受保护路由的帮助。这个例子对我不起作用。我想在访问受保护的路由和未登录的用户时,重定向到登录页面。
AuthenticatedRoute
import React from "react";
import { Route, Navigate } from "react-router-dom";
const AuthenticatedRoute = ({ component: Component, ...rest }) => {
//converts object to boolean ->false if null else true//
const isAuthenticated = !!localStorage.getItem("token");
return (
<Route
{...rest}
render={(props) =>
isAuthenticated ? (
<Component {...props} />
) : (
<Navigate to="/auth/login" />
)
}
/>
);
};
export default React.memo(AuthenticatedRoute);
Routes.js
import React, { lazy } from "react";
import { Navigate, Route, Routes } from "react-router-dom";
import AuthenticatedRoute from "./Components/Routes/AuthenticatedRoute";
const AppRoutes = () => {
return (
<Routes>
<AuthenticatedRoute
path="/admin"
component={<Navigate to="/admin/dashboard" />}
/>
<AuthenticatedRoute exact path="/admin" component={<DashboardLayout />}>
<AuthenticatedRoute exact path="/dashboard" component={<Dashboard />} />
<AuthenticatedRoute
exact
path="/property-management"
component={<AdminPropManagement />}
/>
<AuthenticatedRoute
exact
path="/new-property"
component={<NewProperty />}
/>
</AuthenticatedRoute>
</Routes>
);
};
export default AppRoutes;
【问题讨论】: