位置: 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)

  • realme gt neo2怎么打开深色模式(realmegtneo2怎么开5g)

    realme gt neo2怎么打开深色模式(realmegtneo2怎么开5g)

  • 小米10至尊纪念版的屏幕尺寸是多少(小米10至尊纪念版和小米10s哪个好)

    小米10至尊纪念版的屏幕尺寸是多少(小米10至尊纪念版和小米10s哪个好)

  • 苹果手机耳机模式退不出来了怎么解决(苹果手机耳机模式怎么调回来)

    苹果手机耳机模式退不出来了怎么解决(苹果手机耳机模式怎么调回来)

  • 快手小店退货有运费险吗(快手小店退货有上门取件吗)

    快手小店退货有运费险吗(快手小店退货有上门取件吗)

  • 苹果11 5g能用吗(苹果11能用5g网络)

    苹果11 5g能用吗(苹果11能用5g网络)

  • 超级省电模式闹钟还会响吗(超级省电模式闹钟还能用吗)

    超级省电模式闹钟还会响吗(超级省电模式闹钟还能用吗)

  • 举报了的qq群会出现什么情况(举报了的qq群会封号吗)

    举报了的qq群会出现什么情况(举报了的qq群会封号吗)

  • vivo手机怎么放大字(vivo手机怎么放烟花)

    vivo手机怎么放大字(vivo手机怎么放烟花)

  • oppoa11怎么设置呼吸灯(OPPOa11怎么设置第二个系统)

    oppoa11怎么设置呼吸灯(OPPOa11怎么设置第二个系统)

  • 苹果x手机声音越来越小怎么办(苹果X手机声音变小了怎么回事)

    苹果x手机声音越来越小怎么办(苹果X手机声音变小了怎么回事)

  • 红米k30有没有提示灯(红米k30有哪些新功能)

    红米k30有没有提示灯(红米k30有哪些新功能)

  • iphone右滑返回能改左滑么(iphone右滑返回不好用)

    iphone右滑返回能改左滑么(iphone右滑返回不好用)

  • mdb可以用什么软件修改(mdb文件编辑软件)

    mdb可以用什么软件修改(mdb文件编辑软件)

  • 电脑pcie是什么意思(电脑pcie是什么接口)

    电脑pcie是什么意思(电脑pcie是什么接口)

  • iphone7像素多少(iphone7的像素)

    iphone7像素多少(iphone7的像素)

  • ide和ahci的区别(ide和ahci的区别raid)

    ide和ahci的区别(ide和ahci的区别raid)

  • vivos1是双引擎闪充吗(vivos1双引擎闪充怎么开启触发)

    vivos1是双引擎闪充吗(vivos1双引擎闪充怎么开启触发)

  • iphone蓝牙搜不到beats(iPhone蓝牙搜不到小米手表)

    iphone蓝牙搜不到beats(iPhone蓝牙搜不到小米手表)

  • 小米ai音箱能连几个手机(小米ai音箱能连接电视吗)

    小米ai音箱能连几个手机(小米ai音箱能连接电视吗)

  • excel如何两行互换(excel两行互换怎么操作)

    excel如何两行互换(excel两行互换怎么操作)

  • 朋友圈拉黑对方知道吗(朋友圈拉黑对方心里状态)

    朋友圈拉黑对方知道吗(朋友圈拉黑对方心里状态)

  • 华为p30pro呼吸灯设置(华为p30pro呼吸灯闪烁在哪里设置)

    华为p30pro呼吸灯设置(华为p30pro呼吸灯闪烁在哪里设置)

  • 清除微信缓存会清除掉什么(清除微信缓存会影响聊天记录吗)

    清除微信缓存会清除掉什么(清除微信缓存会影响聊天记录吗)

  • Linux列举大于指定大小文件的所在目录的方法(linux中的大于号什么意思)

    Linux列举大于指定大小文件的所在目录的方法(linux中的大于号什么意思)

  • 纳税检查调整的滞纳金怎么收
  • 协定税率的简称
  • 主税零申报附加税怎样申报
  • 税款的汇兑损益如何做账
  • 房地产企业回迁房增值税
  • 融资租赁固定资产会计处理
  • 未投入使用房屋怎么处理
  • 小规模纳税人季报还是月报?
  • 公司开业前期费用处理
  • 利息支出税前扣除标准2020
  • 由财政拨钱还银行借款怎么做分录?
  • 员工工资可以计入在建工程吗
  • 钢结构安装有哪些工种
  • 红字增值税专用发票信息表能作废吗
  • 某物业公司组织工人进入下水道
  • 劳务派遣公司怎么赚钱
  • 关于不动产进项税额分期抵扣的新政策,以下不属于
  • 发出商品如何做分录
  • 支付法院执行款的账务处理
  • 小规模纳税人每季度超过30万交税
  • 开发票征收品目怎么填
  • 企业延期支付工资的法律依据
  • 劳务费和服务费一样吗
  • 企业不得抵扣进项税的情形
  • 操作系统不同
  • win10任务栏图标怎么变大
  • 在建工程的二级明细的讲解
  • 银行与银行之间转账会计摘要
  • php开源软件
  • 免抵退应退税额15栏怎么填进去
  • win7纯净版系统之家
  • php bind_result
  • php 输出
  • idea搭建web开发环境
  • thinkphp6框架源码完整版下载
  • mysql怎么截取字段
  • python 概率分布函数
  • 新政府会计制度下,属于资产类科目的是
  • 工业企业取得土地收益
  • 公司找个人干活
  • 建筑施工企业增值税税率调整时间
  • 劳务费会计分录是什么
  • 红冲发票重开一定要一样的金额吗?
  • 制造费用期末有余额在借方
  • 关税怎么入账
  • 多计提的工资怎么冲销
  • 管理费用怎样分摊归集到产品
  • 购入自用的机器怎么入账
  • 负数发票要给税务局吗
  • 错误凭证如何处理
  • 卖掉公司旧办公用品怎么入账
  • 现金日记账和银行存款日记账必须逐日结出余额
  • 用于职工福利的增值税怎么计算
  • 总账的建立分为哪几个步骤
  • 隐藏在大山深处的罪恶
  • WIN7中的一个库最多可以包含多少个文件夹
  • win10和os x el capitan分屏操作对比视频
  • xp系统怎么添加ip地址
  • linux编译安装php扩展命令
  • 在pc上安装了hp网络打印机需要注意什么
  • msmpeng.exe是什么程序
  • windows8怎么新建word文档
  • centos7 本地yum
  • 电脑w7系统怎么保存图片
  • win7系统怎么设置屏保图片
  • win7无网激活
  • window无法正常启动怎么办
  • cocos2dx4.0教程
  • Android OpenGL ES(二)----平滑着色
  • linux,windows
  • unity3d Human skin real time rendering plus 真实模拟人皮实时渲染 plus篇
  • js设置导航固定
  • javascript取随机数
  • shell脚本引用文件
  • Unity for Absolute Beginners(二)
  • 国际货运怎么代理
  • 如何下载个人所得税A表
  • 乌市社保缴费一个月多少钱
  • 京豆付款有返利吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设