当前位置: 首页 > news >正文

React18学习笔记(三) ReactRouter----React中的路由

文章目录

        • 0.准备
        • 1.示例:快速创建一个切换登录页和文章页的路由系统
        • 2.实际开发中的路由配置
          • step1:在配置模块新增两个组件
          • step2:新增router模块,引入组件,配置对应关系
          • step3:在应用入口文件src/index.js注入router实例
        • 3.路由导航以及传参
          • 3.1.React中的声明式导航
          • 3.2.React中的编程式导航
        • 4.嵌套路由
        • 5.默认二级路由
        • 6.404路由
        • 7.两种路由模式:hash模式和history模式
          • 7.1.hash模式
          • 7.2.history模式

0.准备

前端路由回顾:
一个路径path对应一个组件component,当访问一个路径时对应的组件会在页面进行渲染
环境搭建:

创建项目:npx create-react-app my-react-router
进入项目目录:cd my-react-router
安装所有依赖:npm i
安装ReactRouter包:npm i react-router-dom
启动项目:npm run start
1.示例:快速创建一个切换登录页和文章页的路由系统
//index.js
//引入
import {createBrowserRouter,RouterProvider} from 'react-router'
//创建路由实例对象
const router=createBrowserRouter({{path:'/login',element:<div>我是登录页</div>//此处跟vue不同,不是component},{path:'/article',element:<div>我是文章页</div>}
})
....
<RouterProvider router={router}></RouterProvider>

成功标志:地址栏localhost:3000/login有显示

2.实际开发中的路由配置
step1:在配置模块新增两个组件
┌─src
├─pages                 业务页面文件存放的目录
│  ├─article
│  │  └─index.js       文章页
│  └─login
│     └─index.js       登录页 ****代码****
//article/index.js
const Article=(=>{return <div>我是文章页</div>
})
export default Article//login/index.js
const Login=(=>{return <div>我是d登录页</div>
})
export default Login
step2:新增router模块,引入组件,配置对应关系

新增模块src/router/index.js

//导入
import login from "../page/login"
import article from "../page/article"
import {createBrowserRouter,RouterProvider} from 'react-router'
//创建路由实例对象
const router=createBrowserRouter({{path:'/login',element:<Login />},{path:'/article',element:<Article />}
})
export default router
step3:在应用入口文件src/index.js注入router实例
//index.js
//引入
import {createBrowserRouter,RouterProvider} from 'react-router'//引入路由实例对象
import router from './router'
....
<RouterProvider router={router}></RouterProvider>
3.路由导航以及传参

路由系统中的多个路由之间进行的路由跳转(并传参)
回顾:声明式导航VS编程式导航,查询参数传参VS动态参数传参

3.1.React中的声明式导航

通过<Link to='/article?id=1001&name=zs'>跳转文章页</Link>标签,描述要跳转去哪个路由
使用场景:左侧菜单栏跳转
传参:查询参数传参和动态参数传参

3.2.React中的编程式导航

通过调用useNavigate钩子函数以命令的形式进行跳转
使用场景:登录后跳转

4.嵌套路由

一级路由中嵌套二级路由
children属性:在一级路由的路由配置中写二级路由

const router=createBrowserRouter({{path:'/login/:id',element:<Login />,children:[{path:'/login111/:id',element:<Login111 />,},{path:'/login222/:id',element:<Login222 />,},]},
}//并在一级路由的页面中写二级路由出口
//Login.js
<Login111 />
5.默认二级路由

访问一级路由时,默认二级路由也能得到渲染
做法:在二级路由的位置去掉path,设置index属性为true

const router=createBrowserRouter({{path:'/login/:id',element:<Login />,children:[{//path:'/login111/:id',index:true,element:<Login111 />,},{path:'/login222/:id',element:<Login222 />,},]},
}
6.404路由

当浏览器都找不到对应path,跳转到404页面

//NotFound.js
const NotFound=()=>{return <h1>404 not found!!!</h1>
})
export default NotFoundconst router=createBrowserRouter({{path:'*',element:<NotFound />}
})
7.两种路由模式:hash模式和history模式
7.1.hash模式

有#号,如:url/#/login,监听hashChange事件,不需要后端文件

7.2.history模式

监听history对象和pushState事件

http://www.dtcms.com/a/390600.html

相关文章:

  • [cesium] vue3 安装cesium方法
  • 埃文科技亮相华为全联接大会2025 联合鲲鹏发布AI使能平台解决方案 共筑AI产业新生态
  • Linux 桌面环境GNOME 49 释出
  • react/umi,浏览器tab设置
  • langchain-PipelinePromptTemplate
  • git 本地仓库与远程仓库链接
  • 绘想 - 百度推出的AI视频创作平台
  • 穿越像素的凝视:深度解析视频中的人物与动物识别算法技术
  • OpenHarmony 4.0 Release源码下载、编译及烧录
  • 大模型提示词Prompt工程:2-全攻略+最佳实践框架+原理解析+实战案例库+七招要诀
  • 大模型微调——Prompt-Tuning
  • code2prompt 快速生成项目 Markdown 文档(结合大模型进行问答)
  • UIKit-CAGradientLayer
  • K8s LoadBalancer服务深度解析
  • Windows 系统开发 iOS 与安卓应用全流程指南,附 PC 前端工具链
  • CentOS 7 系统 “cannot find a valid baseurl for repo base7x86_64” 报错完整解决方案
  • centos7通过kubeadm安装k8s1.27.1版本
  • kubesphere(k8s)如何设置存储类的默认路径
  • 在 k8s 上部署 Kafka 4.0 3节点集群
  • k8s 部署 EMQX 5.8.6 静态三节点集群
  • UVa1374/LA3621 Power Calculus
  • 以 NoETL 重塑 AI-Ready 的数据底座,Aloudata 获评 IDC 面向生成式 AI 的数据基础设施核心厂商
  • 声音转文字API平台推荐
  • Vue3: watch watchEffect
  • 梯度提升算法及其在回归与分类中的应用实战
  • 【自然语言处理与大模型】大模型应用开发四个场景
  • 深度神经网络-传播原理
  • 交通仿真术语
  • 关于Oracle主外键约束的几个SQL语句
  • Python 操作 SQLite:Peewee ORM 与传统 sqlite3.connect 的全方位对比