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

react 路由创建与使用

1, 安装路由

npm i react-router-dom

2,路由组件 createBrowserRouter

// router/index.js
import { createBrowserRouter } from "react-router-dom"import Home from '../page/home'
import New from '../page/new'const router = createBrowserRouter([{path: '/',element: <Home />},{path: '/new',element: <New />},// 404路由配置{path: '*',element: <NotFound />}
])
export default router

3,使用路由

//index.js
import router from './router'
import { RouterProvider } from 'react-router-dom'root.render(// <React.StrictMode><RouterProvider router={router}></RouterProvider>// </React.StrictMode>
)

4,声明式导航

import { Link } from "react-router-dom"
<Link to='/new'>new</Link>

5,编程式导航

import { useNavigate } from "react-router-dom"
// 执行navigate
const navigate = useNavigate()// 使用
<span onClick={() => navigate('/')}>跳转到首页</span>

6,传参

// ====SearchParams======
<span onClick={() => navigate('/home?id=100&name=json')}>跳转到首页</span>
import { useSearchParams } from "react-router-dom"
const [params] = useSearchParams()
const id = params.get('id')
// ====params======
path: '/new/:id',// 路由添加占位符
<span onClick={() => navigate('/new/1000')}>跳转到首页</span>
import { useParams } from "react-router-dom"
const params = useParams ()
const id = params.id

7,嵌套路由

// 使用children属性配置嵌套关系
{path: '/',element: <Layout />,children: [{// path: '',index: true,// index设置为true 默认展示这个二级路由element: <Lxx />},]
}
// 使用<Outlet />组件配置二级路由渲染位置
const Layout = () => {return (<div><Link to="page1">page1</Link><Link to="page2">page2</Link>{/*二级路由出口*/}<Outlet /></div>)
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • WiFi的IP和电脑IP一样吗?怎么更改wifi的ip地址
  • 线段树+二分,CF 431E - Chemistry Experiment
  • Verilog刷题笔记60
  • 计算机网络-PIM-SM组播实验
  • C++:病毒系列回归记3/3 (Doge智能系统已上线)
  • 如何使用查询路由构建更先进的 RAG
  • 宠物掉毛、有异味怎么办?怎么选择宠物空气净化器?
  • OpManager Plus简单说明以及在Linux下的安装
  • 四、控制结构
  • 网络协议的基础知识
  • 链表(静态/动态创建,遍历,计数,查找,在节点的前/后方插入新节点,头插法,尾插法)
  • 基于x86 平台opencv的图像采集和seetaface6的人脸检测功能
  • :class的用法及应用
  • java后端请求与响应总结
  • C++入门基础知识31
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 30秒的PHP代码片段(1)数组 - Array
  • AngularJS指令开发(1)——参数详解
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • es6--symbol
  • Javascript弹出层-初探
  • MYSQL 的 IF 函数
  • node 版本过低
  • Python学习之路16-使用API
  • React-flux杂记
  • vue学习系列(二)vue-cli
  • yii2中session跨域名的问题
  • 安卓应用性能调试和优化经验分享
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 缓存与缓冲
  • 基于axios的vue插件,让http请求更简单
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 开发基于以太坊智能合约的DApp
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 删除表内多余的重复数据
  • 思考 CSS 架构
  • 算法-图和图算法
  • 微信小程序填坑清单
  • 小程序 setData 学问多
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # wps必须要登录激活才能使用吗?
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • (02)Unity使用在线AI大模型(调用Python)
  • (09)Hive——CTE 公共表达式
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355