如何在 React 中实现全局路由守卫?

本文介绍了如何在 React 中实现类似 Vue 的全局路由守卫功能。通过结合 ReactRoute 库,创建一个名为 UseAuth 的组件来处理路由守卫。需求包括:未登录时重定向至登录页,已登录时跳转至管理页面,以及未匹配路径时跳转至404页面。文章详细阐述了每个需求的实现逻辑,并提供了可能造成死循环的情况下的解决方案,以防止程序陷入死循环。最后,作者提供了源码供读者参考学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

使用过 vue 的小伙伴都知道,如果想在 vue 中实现全局路由守卫,只需要在 beforeEach 中写路由守卫逻辑即可。

但是如果使用 react 的话,应该怎么做呢?

在 react 中,其实是没有 beforeEach 的,如果需要实现路由守卫,需要结合 ReactRoute 路由库,自己手动搓一个路由守卫。

本篇文章作者会结合自己的博客管理系统所用到的路由守卫进行演示。

(文章篇幅较详细,想直接看代码的可以到最后去 clone 一份源码)

需求

我的这个管理系统对于路由守卫的要求相对简单,需求如下:

  1. 进入博客管理系统,判断是否登录,未登录则跳转登录页(/login)
  2. 如果已经登录,则跳转管理页面(/mangement)
  3. 如果已经登录但是不能匹配到路径,则跳转404页面(/404)

最主要的功能还是1和2,如果你已经明白需求了,那就继续往下看吧!

实现

基本路由

如果不使用路由守卫,如何在 react 中实现路由?

文档如下:

 我们先按着文档实现一个基本的路由格式,在 app.tsx 中实现如下:

//app.tsx
import React from 'react'
import { BrowserRouter as Router } from 'react-router-dom'
import GetRouter from './components/getRouter'

const App = () => {
  return (
    <Router>
       <GetRouter />
    </Router>
  )
}

export default App

我简单的把路由信息进行了封装,下面是GetRouter 文件:

//./components/getRouter
import { useRoutes } from 'react-router-dom'
import routes from '../router'

export default function GetRouter() {
  le
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JacksonChen_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值