美文网首页
react-路由守卫-6x

react-路由守卫-6x

作者: 云高风轻 | 来源:发表于2023-05-05 08:55 被阅读0次

1. 前言

  1. react 中路由守卫 提的比较少
  2. 这个是写的 react-router-dom 6x的路由守卫一种写法
  3. 写法有很多种 .都是条件渲染,仅供参考

2. 逻辑

  1. React Router 6 中,路由守卫的实现方式有所不同。React Router 6 引入了一个名为Routes的新组件,用于定义路由和路由守卫。
  2. 你可以在<Route>组件上使用一个when属性来定义路由守卫,也可以使用一个useNavigate钩子来进行编程式导航。

3. React Router 6版本中的路由守卫的示例代码:

import React from "react";
import { BrowserRouter as Router, Routes, Route, Navigate } from "react-router-dom";

// 需要进行路由守卫的组件
const PrivateComponent = () => <h1>Private Component</h1>;

// 路由守卫
const AuthGuard = ({ when, navigate, path, ...rest }) => {
  if (when) {
    return <Route {...rest} />;
  } else {
    navigate("/login");
    return null;
  }
};

// App组件
const App = () => (
  <Router>
    <div>
      <h1>React Router Demo</h1>
      <Routes>
        <AuthGuard
          path="/private"
          element={<PrivateComponent />}
          when={isLoggedIn()} // 自定义判断登录状态的函数
        />
      </Routes>
    </div>
  </Router>
);

// 自定义函数:判断用户是否已登录
const isLoggedIn = () => {
  // 判断用户是否已经登录,返回 true 或 false
  return true;
}

export default App;

4. 分析

  1. AuthGuard是我们自己定义的一个组件,它接收when属性和其他路由属性(例如path),
  2. 并在渲染时进行路由守卫逻辑。
  3. 如果用户已登录,AuthGuard会渲染传入的element组件
  4. 否则它会使用useNavigate钩子进行编程式导航,将页面重定向到登录页面。
  5. 在App组件中,我们使用Routes组件来定义路由,并将AuthGuard用于需要进行路由守卫的组件。

  1. 需要注意的是,在React Router 6 中,我们使用element属性来指定需要渲染的组件,而不是component属性。
  2. 此外,我们还需要使用useNavigate钩子来进行编程式导航,因为React Router 6 中不再支持this.props.history对象。

参考资料


初心

我所有的文章都只是基于入门,初步的了解;是自己的知识体系梳理,如有错误,道友们一起沟通交流;
如果能帮助到有缘人,非常的荣幸,一切为了部落的崛起;
共勉

相关文章

  • vue的路由守卫

    路由守卫分3种:全局守卫路由独享守卫组件内的路由守卫 1.全局守卫:beforeEachbeforeResolve...

  • 路由守卫

    路由守卫分为三种 全局守卫: 路由独享守卫卸载route里 组件内守卫:写在组件配置对象里

  • [VUE]动态的更新页面的Title

    首先可以用路由守卫 + VueRouter来实现路由守卫相关文档1.main.js里加入路由守卫 // 页面修改时...

  • vue学习笔记(八)导航守卫(全局守卫,路由独享,组件内守卫)

    导航守卫-全局守卫 导航守卫-路由独享 导航守卫-组件内守卫

  • vue-路由导航守卫&异步组件

    导航守卫包括全局导航守卫、路由守卫、组件局部守卫 全局导航守卫 在全局导航守卫中,每次路由的跳转他们三个都会被触发...

  • Vue嵌套路由和路由守卫

    嵌套路由 路由守卫

  • vue路由守卫

    概念 路由守卫,官网也叫导航守卫,所谓导航,就是路由正在发生变化 路由守卫,主要就是用来通过跳转或取消的方式守卫导...

  • vue学习(52)vue-router(4)

    路由守卫作用:对路由进行权限控制分类:全局守卫、独享守卫、组件内守卫全局守卫(我们可以在meta中配置一些信息) ...

  • 路由

    全局守卫就是每一个路径进来都会经过这个全局守卫的处理 单路由守卫就是把守卫指定给某一个路由 组件内路由就是把守卫放...

  • vue-router 常见导航守卫

    全局守卫vue-router全局有三个守卫 路由独享守卫如果你不想全局配置守卫的话,你可以为某些路由单独配置守卫 ...

网友评论

      本文标题:react-路由守卫-6x

      本文链接:https://www.haomeiwen.com/subject/zqifsdtx.html