React路由配置参考(记录)

整体:

  1. 登录页单独处理:将登录页单独处理,路径为 /login
  2. 使用 AuthLayout 处理授权页面AuthLayout 可以作为一个高阶组件,确保用户登录后才能访问系统中的其他页面。
  3. 加载主布局 BasicLayoutBasicLayout 可以用来加载系统的主布局,并通过 routesRender(routesConfig) 渲染配置文件中的子路由。
// AuthLayout.js
import { Navigate, Outlet } from 'react-router-dom';const AuthLayout = () => {const isLoggedIn = localStorage.getItem('isLoggedIn'); // 通过localStorage检查是否登录if (!isLoggedIn) {return <Navigate to="/login" replace />; // 未登录,重定向到登录页面}return (<div>{/* 渲染子路由 */}<Outlet /></div>);
};export default AuthLayout;
// BasicLayout.js
import React from 'react';
import { Outlet } from 'react-router-dom';const BasicLayout = () => {return (<div>{/* 这里可以放导航栏或侧边栏 */}<h1>系统主界面</h1><Outlet /> {/* 渲染子路由 */}</div>);
};export default BasicLayout;

下面是路由配置:

import { createBrowserRouter, Navigate } from 'react-router-dom';
import LoginPage from './LoginPage';
import AuthLayout from './AuthLayout';
import BasicLayout from './BasicLayout';
import routesRender from './routesRender'; // 假设这是一个用于渲染路由的函数
import routesConfig from './routesConfig'; // 路由配置const router = createBrowserRouter([{path: '/login',element: <LoginPage />, // 登录页},{path: '/', // 授权布局element: <AuthLayout />, // 检查用户是否登录children: [{path: '/', // 主布局element: <BasicLayout />,children: routesRender(routesConfig), // 渲染路由配置},],},
]);export default router;

逻辑说明

  1. /login 路由加载登录页面。
  2. AuthLayout 负责检查用户的登录状态,如果未登录,则重定向到 /login
  3. BasicLayout 渲染主界面布局,并通过子路由渲染实际的页面内容。

这样配置后,进入系统时会先进入登录页面,登录成功后才能访问其他页面,未登录的用户无法访问受保护的页面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/879051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker和docker-compose安装脚本

1.docker安装脚本 1.1创建脚本文件 touch install_docker.sh chmod 777 install_docker.sh cat > install_docker.sh << EOF #!/bin/bash# 删除现有的 Docker echo -e " 1. 删除现有 Docker \n\n" sudo yum remove -y docker \docker-client \docker-clie…

【Linux】多线程:线程互斥、互斥锁

目录 一、多线程访问公共资源时所产生的问题 二、互斥相关背景概念 互斥量mutex&#xff08;锁&#xff09;的引入 三、互斥量 1、初始化互斥量&#xff08;mutex&#xff09; 2、互斥量加锁 3、互斥量解锁 4、 销毁互斥量 四、互斥量的使用 1、使用静态互斥量 2、…

安泰功率放大器在微纳光固化3D打印中的具体应用

随着科技的进步&#xff0c;3D打印技术已经渗透到各个领域&#xff0c;尤其是微纳光固化3D打印技术。这种技术结合了光学、材料科学和微电子学的知识&#xff0c;能够制造出具有微米级精度的复杂物体。本文Aigtek安泰电子将带你探索功率放大器在微纳光固化3D打印中的应用&#…

OpenCV 之 模版匹配多个对象、图片旋转 综合应用

引言 在图像处理和计算机视觉中&#xff0c;模板匹配是一种常用的技术&#xff0c;用于在一幅较大的图像中查找与给定模板图像相似的部分。然而&#xff0c;在实际应用中&#xff0c;目标物体可能会出现在不同的角度&#xff0c;这就需要我们在匹配之前对模板进行旋转处理。本…

仿某皮影狸app官网源码 不错的APP下载官网单页源码 HTML源码

分享一款不错的APP下载官网单页源码&#xff0c;直接修改index.html即可 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89731228 更多资源下载&#xff1a;关注我。

Python(PyTorch和TensorFlow)图像分割卷积网络导图(生物医学)

&#x1f3af;要点 语义分割图像三层分割椭圆图像脑肿瘤图像分割动物图像分割皮肤病变分割多模态医学图像多尺度特征生物医学肖像多类和医学分割通用图像分割模板腹部胰腺图像分割分类注意力网络病灶边界分割气胸图像分割 Python生物医学图像卷积网络 该网络由收缩路径和扩…

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证 目录 回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现基于贝叶…

AI大模型精准升级!揭秘高级RAG架构,让回答更精准、更可靠!

什么是 RAG&#xff1f; 当然&#xff0c;本文依然会讲解一部分 RAG 的基础知识&#xff0c;让你能够对文章的上下文有个初步了解。 “检索增强生成” (Retrieval Augmented Generation)&#xff0c;简称 RAG&#xff0c;这一概念首次出现在 2020 年 Meta 发布的一项学术研究…

中国《人工智能安全治理框架》1.0版正式发布 规范各类AI、算法

今日&#xff0c;全国网络安全标准化技术委员会发布《人工智能安全治理框架》1.0版。《框架》提出了包容审慎、确保安全&#xff0c;风险导向、敏捷治理&#xff0c;技管结合、协同应对&#xff0c;开放合作、共治共享等人工智能安全治理的原则。 针对模型算法安全、数据安全和…

RK3576芯片在智能家居里中型智慧屏产品的应用方案分析

智能家居在近年来得到了快速发展&#xff0c;AI技术不断发展&#xff0c;人机交互十分成熟&#xff0c;各种家电也都迎来了智能化浪潮&#xff0c;智能家居为人们提供了优秀的产品体验&#xff0c;受到主流消费者的青睐&#xff0c;智能家居里的中型智慧屏产品也随之兴起。 瑞芯…

2414. Length of the Longest Alphabetical Continuous Substring

2414. Length of the Longest Alphabetical Continuous Substring class Solution:def longestContinuousSubstring(self, s: str) -> int:ans1tansansfor i in range(1,len(s)):if ord(s[i])ord(s[i-1])1:tans1ansmax(ans,tans)else:tans1return ans

RedisTemplate操作String的API

文章目录 1 String 介绍2 命令3 对应 RedisTemplate API❄️❄️ 3.1 添加缓存❄️❄️ 3.2 设置过期时间(单独设置)❄️❄️ 3.3 获取缓存值❄️❄️ 3.4 删除key❄️❄️ 3.5 顺序递增❄️❄️ 3.6 顺序递减 ⛄4 以下是一些常用的API⛄5 应用场景 1 String 介绍 String 类型…

anaconda启动jupyter notebook

1.在Windows搜索框搜索anaconda prompt点击打开 2.然后输入命令jupyter notebook 3.在这个页面编写你的程序

MATLAB实现PID参数自动整定

目录 1、项目说明 2、文件说明 1、项目说明 本项目旨在通过 MATLAB 语言实现 PID 参数的自动整定&#xff0c;并设计了一个直观易用的 GUI 界面。该系统特别适用于实验室环境下的 PID 参数自整定任务。整定的核心原则在于优化系统性能&#xff0c;使系统的衰减比尽可能接近理…

2025考公最新视频免费分享花生十三、齐麟、葛欣、阿里木江、龙飞、袁东、飞扬、李梦娇等

&#x1f389;备战公考不用愁&#xff0c;我的小程序为你助力&#x1f389; 这里汇聚了花生十三、齐麟、葛欣、阿里木江、龙飞、彬彬、袁东、飞扬、李梦娇、高照等几十位公考名师。他们的视频课程精彩纷呈&#xff0c;搭配详细讲义&#xff0c;让你轻松掌握公考要点。 作为一…

Java | Leetcode Java题解之第395题至少有K个重复字符的最长子串

题目&#xff1a; 题解&#xff1a; class Solution {public int longestSubstring(String s, int k) {int ret 0;int n s.length();for (int t 1; t < 26; t) {int l 0, r 0;int[] cnt new int[26];int tot 0;int less 0;while (r < n) {cnt[s.charAt(r) - a];…

python使用selenium,实现简单爬虫功能

目录 前言 环境 代码 前言 有个朋友想爬取一些数据&#xff0c;让我帮忙搞下&#xff0c;我也比较菜&#xff0c;不怎么用python就随便搜了点资料尝试下。 环境 idea&#xff0c;python3.1.0 edge浏览器&#xff08;谷歌也可以&#xff09;&#xff0c;都需要在python的…

自然语言处理系列六十一》分布式深度学习实战》TensorFlow深度学习框架

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十一分布式深度学习实战》TensorFlow深度学习…

linux定时监听ssh服务是否启动-------麒麟操作系统永久关闭swap

linux监听ssh服务是否启动 1、监听脚本2、定时任务3、麒麟操作系统&#xff0c;永久关闭swap 1、监听脚本 #在/usr/local/bin目录下新建脚本文件 cd /usr/local/bin touch check_sshd.sh #给可执行权限 chmod x /usr/local/bin/check_sshd.sh脚本内容如下&#xff1a; #!/…

回溯算法day24| 491.递增子序列、46. 全排列、47. 全排列 II

回溯算法day24| 491.递增子序列、46. 全排列、47. 全排列 II 491.递增子序列[46. 全排列](https://leetcode.cn/problems/permutations/)[47. 全排列 II](https://leetcode.cn/problems/permutations-ii/) 491.递增子序列 给你一个整数数组 nums &#xff0c;找出并返回所有该…