react-router6.4+的项目种路由实现方式(列举两种)
创始人
2024-05-31 09:54:14
0

至笔者发布该文章为止,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,只是个人习惯用yarn

①路由组件实现方式

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(
)

App.js

import { Routes, Route, Link, Outlet } from 'react-router-dom'const App = () => {return (
}>} />} />} />
) }// 一级路由 const LayOut = () => {return (
  • Home
  • About
  • Dashboard
  • nothing here
{/* 在父路由元素中使用来呈现其子路由元素。这允许在呈现子路由时显示嵌套UI。如果父路由完全匹配,它将呈现子索引路由,如果没有索引路由,则什么也不呈现 */}
) }// 以下为二级路由 function About() {return (

About

); }function Dashboard() {return (

Dashboard

); }function NoMatch() {return (

Nothing to see here!

Go to the home page

); }

路由组件的实现方式具体如下:
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(
)

App.js

import { Link, Outlet, useRoutes } from 'react-router-dom'export default function App() {const routes = [{path: '/',element: ,children: [{path: 'dashboard',element: ,},{path: 'about',element: ,},{path: '*',element: }],},]const element = useRoutes(routes)return (
{element}
) } function LayOut() {return (
  • Home
  • About
  • Dashboard
) } function About() {return (

About

) } function Dashboard() {return (

Dashboard

) } function Notmatch() {return (

Not thing

Home
) }

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


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

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...