当前位置: 首页 > 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

占位后即可拿到

相关文章:

  • 外贸网站建设哪家实惠手游推广赚佣金的平台
  • 吉林做网站给公司做网站的公司
  • 网站漂浮百度广告联盟价格
  • 对软件开发的理解和认识百度网站快速优化
  • 你的安全设置不允许网站便民信息微信平台推广
  • dw怎么做网站教程无锡网站seo
  • MP1652GTF-Z:MPS高效3A降压转换器 工业5G通信专用
  • React HOC(高阶组件-补充篇)
  • ubuntu安装docker遇到权限问题
  • kubernetes》》k8s》》滚动发布 、金丝雀发布 、
  • Vue-14-前端框架Vue之应用基础嵌套路由和路由传参
  • 闲庭信步使用SV搭建图像测试平台:第十三课——谈谈SV的数据类型
  • 在一个成熟产品中,如何设计数据库架构以应对客户字段多样化,确保系统的可维护性、可扩展性和高性能。
  • androidx中<layout>根布局的意义及用法
  • 从UI设计到数字孪生:构建智慧城市的数据可视化体系
  • 百度中年危机:一场艰难的突围战
  • 解决uniapp vue3版本封装组件后:deep()样式穿透不生效的问题
  • ISP Pipeline(6): Color Filter Array Interpolation 色彩滤波阵列
  • 创客匠人解析视频号公私域互通逻辑:知识变现的破圈与沉淀之道
  • Pycharm无法运行Vue项目的解决办法
  • Qt实现tcp通信(QTcpServer和QTcpSocket的应用)详细教程
  • 智能客服三大模型解析:扩展问数量如何因架构差异撬动90%匹配率?
  • CentOS下Nginx服务器搭建全攻略
  • kotlin中::class.java的意义
  • 简单使用python
  • 【零基础学AI】第5讲:Pandas数据处理