如何使用 React Router 创建公共和私有路由

2025-05-25

如何使用 React Router 创建公共和私有路由

使用React Router在 React 应用中编写公共和私有路由的步骤

在开发带有身份验证的 React 应用程序时,我们可能需要公共路由和私有路由。我们先来看看它们是什么?

公共路线

公共路由包括登录、注册、忘记密码、重置密码。简单来说,这些路由在登录App之前就可以访问。

私人路线

私人路线根据应用程序而有所不同,例如仪表板、用户配置文件、应用程序设置、主页等。简单来说,只有登录后才能访问这些路线。

公共路由和私有路由的限制是,登录后不能访问公共路由,登录前不能访问私有路由。

在本文中,我们将了解如何使用 React-Router 为你的 React 应用创建公共和私有路由。让我们开始吧

公共路线

首先,让我们创建一个PublicRoute.js组件来处理公共路线条件,如下所示

import {
Route,
Redirect
} from 'react-router-dom';
function PublicRoute({ children, isAuthenticated, ...rest }) {
return (
<Route
{...rest}
render={
({ location }) => (
!isAuthenticated ? (
children
) : (
<Redirect
to={{
pathname: '/home',
state: { from: location }
}}
/>
))
}
/>
);
}
export default PublicRoute;
view raw PublicRoute.js hosted with ❤ by GitHub

正如您在上面的代码中看到的,公共路由组件接收 3 个 props,如childrenisAuthenticated和 …rest 。

如果用户通过身份验证,他将被重定向到主屏幕,并且只有未通过身份验证(登录)时才可以访问公共路线。

私人路线

私有路由组件与公共路由类似,唯一不同之处在于重定向URL和认证条件。

如果用户未通过身份验证,他将被重定向到登录页面,并且用户只有通过身份验证(登录)才能访问经过身份验证的路线。

受保护的路线

受保护的 Route 组件用于映射所有经过身份验证的路由,如下所示

经过身份验证的路由在 routes.js 中定义如下

整合路线

现在让我们将路由组件集成到 App.js,如下所示

这里我们用组件包装了未经验证的路由,用组件<PublicRoute />包装了经过验证的路由。<PrivateRoute />

我们已经使用 Suspense 为组件添加了延迟加载。 
现在我们已经配置了私有路由和公共路由。如果没有匹配,<NoFoundComponent />则会进行渲染。

结论

公共和私有路由还会限制在注销后使用浏览器的后退按钮访问之前访问过的路由。希望以上信息对您有所帮助。感谢您的阅读。

在Twitter上获取更多更新

你可以给我买杯咖啡来支持我 ☕

电子书

使用 ChatGPT 调试 ReactJS 问题:50 个基本技巧和示例

ReactJS 优化技术和开发资源

更多博客

  1. Redux Toolkit - 编写 Redux 的标准方法
  2. 5 个软件包可在开发过程中优化和加速您的 React 应用
  3. 如何在 React 中以优化和可扩展的方式使用 Axios
  4. 15 个自定义 Hooks 让你的 React 组件更轻量
  5. 免费托管 React 应用的 10 种方法
  6. 如何在单页应用程序中保护 JWT
  7. React 18 Alpha:快速概览
  8. Redux Auth Starter:零配置 CRA 模板
文章来源:https://dev.to/nilanth/how-to-create-public-and-private-routes-using-react-router-72m
PREV
如何将 React 应用加载时间缩短 70%
NEXT
不要优化你的 React 应用,而是使用 Preact