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

  • 期末有留底税额可需要进行账务处理
  • 境内公司没有收购的股票
  • 计提固定资产折旧,车间使用的固定资产折旧1400
  • 上级拨入资金借方表示什么
  • 联营企业股利收入
  • 出口退税申报无电子信息
  • 总公司和分公司类型必须一样么
  • 转账支票的用途怎么写
  • 税控软件维护
  • 库存商品结转成本的金额怎么计算
  • 报废资产取得的增值税
  • 固定资产未验收投入使用
  • 固定资产买入
  • 手撕发票去年的可以报销吗
  • 建筑业如何核算费用
  • 广告公司 成本
  • 信息技术服务在开票系统怎么选
  • 无经营零申报公司注销要交印花税吗
  • 如何屏蔽骚扰电话和推销电话
  • 企业拆迁 补偿
  • 加工费计入成本怎么计算所得税
  • 公司发生的业务有哪些
  • 以公司名义购买房产的利与弊
  • 吉隆坡石油双塔有多高
  • php
  • 开增值税专用发票必须走公账吗
  • vue3全局属性
  • wamp环境搭建的过程
  • python模拟微信
  • 用人单位未为劳动者缴纳社会保险费
  • 什么叫股权溢价之谜?
  • 大学生web网页实训心得体会
  • 符合资本化的研发支出不影响利润总额吗
  • centos php7.4
  • 前端2020年趋势
  • 前端必学课程
  • 前端好看的颜色
  • php图片库
  • 金税盘 解锁
  • python科学计算库有哪些
  • php验证码代码怎么写
  • SQL server 2008安装程序遇到以下错误 sku
  • dedecmsv6
  • 培训费属于什么
  • 百旺税控盘会自动清卡吗
  • 收到货款没开票的会计分录怎么做
  • 公司如何交五险一金
  • 增值税留抵税款制度
  • 外贸企业账务处理流程举例讲解
  • 当期免抵税额和免抵退税额的区别
  • 购进货物的运费税率是从主吗
  • 农产品收购发票怎么抵扣
  • 养老保险产生的利息怎么来的
  • 企业的一般账户可以转款到个人吗
  • 资产状况信息公示还是不公示
  • 旅游饮食服务企业会计核算的特点包括
  • sql server服务器模式
  • 怎么快速判断哪些角是第几象限
  • centos6.5安装步骤
  • xp如何一键还原系统还原
  • linux命名命令
  • win8开不了机怎么系统还原
  • 贝塞尔曲线pr怎么用
  • bootstrap轮播插件
  • javascript中的函数也称为什么
  • nodejs安装在c盘好还是d盘好
  • js实现滑块拖动
  • 小说温故知新
  • cd跳转不到目录
  • 使用jquery实现表单验证
  • JavaScript+html5 canvas制作的圆中圆效果实例
  • 细说javascript
  • jquery 通过name获取元素
  • python中文分词库
  • 电子税务局如何申报社保
  • 陕西省电子税务局
  • 分国分项抵免法
  • 安徽省各地区最低录取中考分数线
  • 2020年税务系统关闭
  • 浙江欧派和广东欧派哪个好
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设