快速理解:React-router-dom

使用react+vite快速创建react项目

创建一个react-router的项目

npm create vite@latest react-router --template reace 
yarn create vite react-router --template react 

安装react-router-dom路由

1.因为使用的vite安装,所以是还未下载项目依赖需要先npm i 或者 yarn2.再到在新建的项目文件夹终端运行 npm install react-router-dom安装路由路由方式BrowserRouter(history)和HashRouter(Hash)

import {BrowserRouter} from ‘react-router-dom’ 通过引入路由方式

1.BrowserRouter:内核为浏览器的history,经过二次封账成BrowserRouter。
2.HashRouter:根据url的#哈希值的变化。

hash和history只有url是否拼接#号的区别。这里就用BrowserRouter模式。

简单理解使用

在src文件夹下的App.jsx中引入路由

import {BrowserRouter,Routes,Route,Link} from 'react-router-dom' 

BrowserRouter:包裹路由组件,声明使用history模式。

Link:是一个跳转的链接。经过编译后是<a>标签。

Routes:路由注册表用来包裹同一层级路由。

Route:注册路由,根据url的变化映射对应的element组件。

 <BrowserRouter><Link to='/'>主页</Link><Link to='/about?id=123'>关于</Link><Routes><Route path='/' element={<Home></Home>}></Route><Route path='/about' element={<About></About>}></Route></Routes></BrowserRouter> 

当使用Link进行跳转时直接进行参数拼接即可to=‘/about?id=123’

使用的hooks函数,编程试跳转传参

import {useNavigate} from 'react-router-dom' 

useNavigate:只可以在已注册的路由组件中引入跳转到其他路由组件。

我们在Home的函数中调用:const Navigate = useNavigate()

在事件的回调函数中执行: Navigate(/about?id=${msg}) 就会引起路由的切换

接收参数

import {useSearchParams} from 'react-router-dom' 

useSearchParams:接收url中以问号拼接的参数。

在引入这个hooks函数后调用 const [params] = useSearchParams()

使用params.get('id')把参数的键传入,就可以拿到参数的值

以上是问号拼接的方式

用‘/’路径形式传参的方法

例如:to='/about/123'

我们需要在注册路由时提前声明好,about后用斜杠拼接的是参数。

<Route path='/about/:id' element={<About></About>}></Route> 

做好声明后就可以直接使用斜杠拼接参数了

<button onClick={()=>navgete(`/about/${msg}`)}>发送到关于</button> 

使用字符串的模板拼接语法,在/后拼接了一个msg

如何获取拼接的参数?和问号拼接的不同。

import {useParams} from 'react-router-dom' 

useParams:获取url’/'路径拼接参数的hooks函数

const params = useParams()

params.id 获取msg的值

出现的问题

我们发现,这个路由组件和静态页面写到一起的话非常繁杂,不易于维护。如果有新入职的程序员看见堆积如山的代码,是个什么样的心情呢? 所以我们使用模块化开发。我们把路由组件提取出来形成一个新组件再和主页面放在一起。就会变得有层次感,写出优雅的代码。

我们创建一个路由层。routes文件夹index.jsx。

import {useRoutes} from 'react-router-dom' 

useRoutes:路由注册表hooks函数。

import Home from '../pages/home'
import About from '../pages/about'
const routes = [{path:'/',element:<Home/>},{path:'/',element:<About/>},{path:'*',element:<NotFround/>}
]

function element(){const el = useRoutes(routes)return el 
}

export default element 

useRoutes()根据url的变化返回一个路由组件。

我们再到App.jsx中引入抛出的函数

路由方式的包裹BrowserRouter还是不能少的。

以上是学习react-router-dom的个人理解。感谢

最后

整理了75个JS高频面试题,并给出了答案和解析,基本上可以保证你能应付面试官关于JS的提问。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值