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

react - ReactRouter—— 路由传参

什么是前端路由?

一个路径path对应一个component当我们在浏览器中访问一个path的时候,path对应的组件会在页面中进行渲染

简介 | React Router 中文文档 

创建路由开发环境

使用路由我们还是采用CRA创建项目的方式进行基础环境配置

安装router
npm i react-router-dom
router配置

 新建router文件 
import Login from '../page/Login/index'
import Home from '../page/Home/index'import { createBrowserRouter } from 'react-router-dom'
const router = createBrowserRouter([{path:'/login',element:<Login></Login>},{path:'/Home',element:<Home></Home>}
])
export default router
在项目根目录index.js进行引入使用
import React from 'react'
import { createRoot } from 'react-dom/client'import App from './App'
//引入store
import store from './store/index'
import { Provider } from 'react-redux'
//引入router
import router from './router/index'
import { RouterProvider } from 'react-router-dom' const root = createRoot(document.getElementById('root'))
root.render(<RouterProvider router={router}><Provider store={store}><App /></Provider></RouterProvider>
)
路由导航
什么是路由导航?   页面跳转

路由系统中的多个路由之间需要进行路由跳转,并且在跳转的同时有可能需要传递参数进行通信

声明式导航

import { Link } from 'react-router-dom'
const Login = ()=>{return (<div>我是登录页   <Link to="/home">跳转home页</Link></div>)
}
export default Login
编程式导航

import { Link ,useNavigate} from 'react-router-dom'const Home = () => {const navatigate = useNavigate() //声明return(<div>我是home页<button onClick={()=>navatigate('/login')}>点击跳转到Login页</button></div>)
};
export default Home;
 导航传参

 第一种    拼接
传递参数 
import { Link } from 'react-router-dom'
const Login = ()=>{return (<div>我是登录页   //声明式导航传参<Link to="/home?name=我是首页&id=1">跳转home页</Link>//编程式导航传参<button onClick={()=>navatigate('/login?name=我是首页&id=1')}>点击跳转到Login页</button></div>)
}
export default Login
接收参数   使用useSearchParams
import { useSearchParams} from 'react-router-dom'const Home = () => {const [params] = useSearchParams()let id = params.get('id')console.log(params.get('id'),params.get('name'),id);return(<div>我是home页</div>)
};
export default Home;
第二种    params传参

 注意:使用params传参需要去router进行占位

传递参数
import { Link,useNavigate } from "react-router-dom";
const Login = () => {const navatigate = useNavigate()return (<div>我是登录页<Link to="/home/我是首页/1">跳转home页1</Link><button onClick={()=>navatigate('/home/我是登录页/1')}>点击跳转</button></div>);
};
export default Login;
接受参数
import { useParams} from 'react-router-dom'const Home = () => {const params1 = useParams()console.log(params1.id,params.name);return(<div>我是home页</div>)
};
export default Home;
这样是接收不到的,需要去路由进行占位
import Login from '../page/Login/index'
import Home from '../page/Home/index'import { createBrowserRouter } from 'react-router-dom'
const router = createBrowserRouter([{path:'/login',element:<Login></Login>},{path:'/home/:name/:id',element:<Home></Home>}
])
export default router

占位后即可拿到

http://www.lqws.cn/news/532783.html

相关文章:

  • 【STM32 学习笔记】PWR电源控制
  • Java 大视界 -- 基于 Java 的大数据可视化在智慧城市能源消耗动态监测与优化决策中的应用(324)
  • 【linux】全志Tina配置swupdate工具进行分区打包
  • 《PT100两线制温度测量系统设计:从电路原理到嵌入式实现》
  • 【嵌入式ARM汇编基础】-ELF文件格式内部结构详解(二)
  • 香港政府发表《香港数字资产发展政策宣言 2.0》,提出「LEAP」框架
  • 星型模式(Star Schema)
  • lua脚本为什么能保证原子性
  • 云效代码仓库导入自建gitlab中
  • Redis核心知识详解:从全局命令到高级数据结构
  • 首款SUV小米YU7、小米AI眼镜等新品重磅发布,玄戒O1超大规模量产
  • 湖北理元理律师事务所:科学债务优化如何守护民生底线
  • MySQL 总是差八个小时,如何破?
  • Linux中部署Jenkins保姆间教程
  • 爬虫005----Selenium框架
  • 9. 回文数
  • MySQL (二):范式设计
  • Linux服务器部署Leantime与cpolar构建低成本团队协作环境
  • LRU缓存C++
  • kubernetes》》k8s》》滚动发布 、金丝雀发布 、
  • 医疗AI专科子模型联邦集成编程分析
  • 第一章-人工智能概述-机器学习基础与应用(1/36)
  • 时序分析未完待续
  • DeepSeek16-open-webui Pipelines开发填坑
  • 什么是财务共享中心?一文讲清财务共享建设方案
  • dlib检测视频中的人脸并裁剪为图片保存
  • centos 7 安装NVIDIA Container Toolkit
  • 鸿蒙原子化服务与元服务:轻量化服务的未来之路
  • Spring Security 安全控制终极指南
  • postman接口功能测试