位置: IT常识 - 正文

react-router6.4+的项目种路由实现方式(列举两种)

编辑:rootadmin
react-router6.4+的项目种路由实现方式(列举两种)

推荐整理分享react-router6.4+的项目种路由实现方式(列举两种),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

至笔者发布该文章为止,react-router已经到了6.8.2版本,但中文文档仍旧遥远,网上教程参差不齐而大多是老版本。故笔者也是顶着蹩脚的英文阅读能力对react-router的6.4+版本有了一定的认识后,写下本篇文章

来源: 官方文档 实际上,官方也给出了示例:https://github.com/remix-run/react-router/tree/dev/examples

由于先学习了vue的原因,我对路由数组实现路由的方式比较熟悉,故在此也列出了路由对象数组的实现方式,以及原本的路由组件实现方式 注意,这里的代码只是演示,具体撰写位置以实际为准(我这里是正好写一个项目)

正文如下

安装

yarn add react-router-dom // 当然npm什么的也ok,只是个人习惯用yarnreact-router6.4+的项目种路由实现方式(列举两种)

①路由组件实现方式

index.js

import { createRoot } from 'react-dom/client'import { BrowserRouter } from 'react-router-dom'import App from './App'const root = createRoot(document.getElementById('root'))root.render(<BrowserRouter><App /></BrowserRouter>)

App.js

import { Routes, Route, Link, Outlet } from 'react-router-dom'const App = () => {return (<div><Routes><Route path='/' element={<LatOut />}><Route path='about' element={<About />} /><Route path='/dashboard' element={<Dashboard />} /><Route path='*' element={<Nomatch />} /></Route></Routes></div>)}// 一级路由const LayOut = () => {return (<div><ul><li><Link to='/'>Home</Link></li><li><Link to='/about'>About</Link></li><li><Link to='/dashboard'>Dashboard</Link></li><li><Link to='/nothing-here'>nothing here</Link></li></ul>{/* 在父路由元素中使用来呈现其子路由元素。这允许在呈现子路由时显示嵌套UI。如果父路由完全匹配,它将呈现子索引路由,如果没有索引路由,则什么也不呈现 */}<Outlet /></div>)}// 以下为二级路由function About() { return ( <div> <h2>About</h2> </div> );}function Dashboard() { return ( <div> <h2>Dashboard</h2> </div> );}function NoMatch() { return ( <div> <h2>Nothing to see here!</h2> <p> <Link to="/">Go to the home page</Link> </p> </div> );}

路由组件的实现方式具体如下: Routes组件包裹Route组件,而Route组件又可包裹它的下属Route组件(即子路由) Link组件实现跳转,当然也可利用其他方式,这里只是示例 Outlet组件用在有子路由的父路由底部用于显示子路由(如果需要)

②路由对象数组实现方式

index.js

import { createRoot } from 'react-dom/client'import { BrowserRouter } from 'react-router-dom'import App from './App'const root = createRoot(document.getElementById('root'))root.render( <BrowserRouter> <App /> </BrowserRouter>)

App.js

import { Link, Outlet, useRoutes } from 'react-router-dom'export default function App() { const routes = [ { path: '/', element: <LayOut />, children: [ { path: 'dashboard', element: <Dashboard />, }, { path: 'about', element: <About />, }, { path: '*', element: <Notmatch /> } ], }, ] const element = useRoutes(routes) return ( <div> {element} </div> )}function LayOut() { return ( <div> <ul> <li> <Link to="/">Home</Link> </li> <li> <Link to="/about">About</Link> </li> <li> <Link to="/dashboard">Dashboard</Link> </li> </ul> <Outlet /> </div> )}function About() { return ( <div> <h2>About</h2> </div> )}function Dashboard() { return ( <div> <h2>Dashboard</h2> </div> )}function Notmatch() { return ( <div> <h2>Not thing</h2> <Link to='/'>Home</Link> </div> )}

路由对象数组的实现方式具体如下: App组件内内置routes数组(路由较多的时候也可将它单拎出去一个文件),并使用useRoutes Hook,它将返回element可用于渲染

事实上react-router6.4+版本,有很多种路由实现方式,包括上述两种方法也可相互杂交,另还有RouterProvider等等。我这里只是列出了差距比较大而撰写方法最为截然不同的两种,我个人当然是青睐于路由数组,但还是各有各的喜欢吧

本文链接地址:https://www.jiuchutong.com/zhishi/300229.html 转载请保留说明!

上一篇:Vue学习之从入门到神经(两万字收藏篇)(vue快速入门)

下一篇:自动驾驶决策概况(自动驾驶汽车决策与控制pdf)

  • 优酷酷喵会员与优酷会员区别(优酷酷喵会员与优酷会员区别会双扣费吗)

    优酷酷喵会员与优酷会员区别(优酷酷喵会员与优酷会员区别会双扣费吗)

  • oppofindx2pro屏幕刷新率多少(oppofindx2pro屏幕刷新率)

    oppofindx2pro屏幕刷新率多少(oppofindx2pro屏幕刷新率)

  • 小米手机指纹锁怎么设置(小米手机指纹锁怎么设置密码和指纹)

    小米手机指纹锁怎么设置(小米手机指纹锁怎么设置密码和指纹)

  • 微信拍一拍如何设置文字(微信拍一拍如何改内容)

    微信拍一拍如何设置文字(微信拍一拍如何改内容)

  • 直播者能看到对方吗(直播者能看到看直播的人吗)

    直播者能看到对方吗(直播者能看到看直播的人吗)

  • 红米note8pro电池能用多久(红米note8pro电池多少钱)

    红米note8pro电池能用多久(红米note8pro电池多少钱)

  • 苹果11系列是5G手机吗(苹果11系列是双扬声器吗)

    苹果11系列是5G手机吗(苹果11系列是双扬声器吗)

  • 手机停机后一直扣费合理吗(手机停机后一直扣费应该怎么投诉)

    手机停机后一直扣费合理吗(手机停机后一直扣费应该怎么投诉)

  • 蓝牙模式是什么意思(蓝牙模式是什么符号)

    蓝牙模式是什么意思(蓝牙模式是什么符号)

  • 自助解封是什么意思(封卡了怎么解封)

    自助解封是什么意思(封卡了怎么解封)

  • hryalooa是华为什么型号(hryal00是华为什么型号手机)

    hryalooa是华为什么型号(hryal00是华为什么型号手机)

  • s9卫星朝什么方向(s九卫星在哪个方向)

    s9卫星朝什么方向(s九卫星在哪个方向)

  • 电信4g有几个频段(电信4g频点都是有哪些)

    电信4g有几个频段(电信4g频点都是有哪些)

  • 小米10pro上市时间(小米10pro 上市价格)

    小米10pro上市时间(小米10pro 上市价格)

  • 优酷视频能同时登录几个

    优酷视频能同时登录几个

  • 路由器pin码是什么(路由器pin码有什么用)

    路由器pin码是什么(路由器pin码有什么用)

  • ps羽化的作用是什么(ps里的羽化有什么用)

    ps羽化的作用是什么(ps里的羽化有什么用)

  • 手机上面字体大小怎么设置(手机上面字体大太小怎么放大)

    手机上面字体大小怎么设置(手机上面字体大太小怎么放大)

  • 苹果x怎么删除就寝(苹果x怎么删除电池用量记录)

    苹果x怎么删除就寝(苹果x怎么删除电池用量记录)

  • 抖音怎么做商品橱窗(抖音怎么做商品推广)

    抖音怎么做商品橱窗(抖音怎么做商品推广)

  • 快手怎么连麦主播(快手怎么连麦的)

    快手怎么连麦主播(快手怎么连麦的)

  • xsmax双卡在哪插(xsmax双卡双待怎么插)

    xsmax双卡在哪插(xsmax双卡双待怎么插)

  • 华为mate30手势怎么设置

    华为mate30手势怎么设置

  • 红米k20pro是多少赫兹刷新率(红米k20pro是多少w快充)

    红米k20pro是多少赫兹刷新率(红米k20pro是多少w快充)

  • 校园网密码怎么修改(校园网密码怎么改)

    校园网密码怎么修改(校园网密码怎么改)

  • 余利宝提现有手续费吗(余利宝提现要钱吗)

    余利宝提现有手续费吗(余利宝提现要钱吗)

  • 新领的发票怎么分发
  • 结转应交增值税是什么意思
  • 收据盖发票专用章后果
  • 发票作废了清单一样怎么重新使用
  • 电子承兑提示付款
  • 运输途中的不合理损耗有哪些
  • 残保金税率是万元以下吗
  • 增值税本期应补退税额为负数怎么处理
  • 银行如何做存款
  • 什么费用可以列支拆迁补偿费
  • 销售的行为
  • 船票能开发票吗
  • 小微企业减免所得税优惠政策
  • 印花税销售收入按50%计算征收
  • 收到测试费几分钱如何做账
  • 不动产处置流程
  • 旧设备出口要交增值税吗
  • 汽车发票金额怎么算
  • 民间非营利组织会计科目
  • 总分公司合并缴纳个税
  • 个人劳务费怎么计算
  • deepin怎么退出命令行
  • linux系统中用户账户有哪些分类
  • 库存呆滞品处理方法
  • 增值税税控系统折旧
  • 多收不用退的货物怎么办
  • 销售补差是怎么算的
  • 企业期末营业利润分录
  • root怎么开oppo
  • php 文件上传类型限制
  • 二手房买卖要交契税吗
  • vue 查询
  • 一般纳税人商业税负多少
  • 企业所得税申报表A类
  • 加计抵减和加计扣除是一样的吗
  • 资本化支出的账务处理
  • 招待费超出部分的分录
  • 供热企业税收优惠
  • 注册资本为
  • 企业所得税预缴纳税申报表
  • vue2跟vue3
  • Python如何查看中风患者两表的数据量
  • Apache RocketMQ 5.0 笔记
  • 新公司开账户需要多少钱
  • 商品编码原则是指什么
  • sqlserver实现分页查询
  • 深圳市企业稳岗补贴标准
  • 未开票收入如何计提增值税
  • 来料加工的账务处理新收入准则
  • 不得抵扣增值税的情形
  • 实际出资大于注册资金
  • 公司组织员工旅游需要交个税吗
  • 补缴以前年度的增值税以及附加税,还有罚款的账务处理
  • 在建工程发生的运费计入什么科目
  • 0税率出口退税
  • 什么公司转让需要交税
  • 应收账款周转率范围多少合适
  • 如何开具发票?
  • 资产负债率多少属正常范围
  • 个体工商户建行贷款条件
  • sql2005开启xp_cmdshell
  • ghost过的硬盘能恢复吗
  • Mac如何开启sip
  • winxp任务栏消失
  • linux 操作系统
  • win7架设ftp服务器
  • unity数学函数
  • dos批处理实例
  • ai人工智能python
  • python cx_Oracle的基础使用方法(连接和增删改查)
  • perl常用函数
  • vue js组件
  • class在js中的实际运用
  • jquery fullpage
  • js弹出div出现遮罩层
  • jquery input checked
  • 税务巡视组一般检查什么
  • 电子税务局企业账号是税号吗
  • 增值税申报表如何导出
  • 个人开具农产品普通发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设