IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> react-router-dom v6的变化 -> 正文阅读

[JavaScript知识库]react-router-dom v6的变化

react-router-dom v6

原文地址

1、useNavigate替代useHistory

在v6版本useHistory被新hookuseNavigate代替,用法也发生的很大的变化

//v5
import {useHistory} from 'react-router-dom'

function ChangePage(){
    const history = useHistory()
    const handleClick = () => {
        history.push('/home')
        //history.replace('/home')
        //history.go(-1)
        //history.goback()
        //history.goForward()
    }
    return(
        <button onClick={handleClick}>跳转</button>
    )
}

变为:

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

function ChangePage(){
    const navigate = useNavigate()
    const handleClick = () => {
        navigate('/home')
        //navigate('/home', {replace: true}
        //navigate(-1) 后退
        //navigate(1) 前进
    }
    return(
        <button onClick={handleClick}>跳转</button>
    )
}

2、element替代component

//v5
<Route path='/' component={Home} />
//v6
<Route path='/' element={<Home />} />

3、useRoutes的使用

v6版本中引入了useRoutes来集中式管理路由配置

不同于v5版本需要安装react-router-config

v6版本我们可以直接从react-router-dom中解构导入useRoutes

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

useRoutes可以直接根据JavaScript的对象数组生成路由

需要注意的是useRoutes必须使用在BrowserRouterHashRotuerRouter

import { useRoutes } from 'react-router-dom'
import Login from '../pages/Login'
import Home from '../pages/Home'

const AppRoutes = () => {
  let element = useRoutes([
    {
      path: '/',
      element: <Login />,
    },
    {
      path: '/home',
      element: <Home />,
    }
  ])
  return element
}

export default AppRoutes
import React from 'react'
import { HashRouter as Router } from 'react-router-dom'
import AppRoutes from './routes/AppRoutes'

function App() {
  return (
    <Router>
      <AppRoutes />
    </Router>
  )
}

export default App

4、Routes替代Switch

v6版本引入了Routes组件来代替Switch组件,功能比后者要更加强大。

//v5
<Switch>
	<Route path='/' component={Home} />
</Switch>

//v6
<Routes>
    <Route path='/' element={<Home/>} />
</Routes>

在v5版本中的Switch是按照最先匹配的路由来更新页面,但是Routes却是采用最优匹配的,这可以避免我们再开发中因为路由的匹配顺序而绞尽脑汁甚至不断修改。

所以而且v6版本我们不再需要为Route添加exact精准匹配了。

5、嵌套路由,OutLet组件

在v5版本中,我们使用嵌套路由需要明确定义。

function App() {
    return(
    	<Router>
           <div>
             <Route exact path="/" component={Login} />
             <Route path="/home" component={Home} />
           </div>
        </Router>
    )
}
function Home() {
    return(
    	<div>
        	home
            <div>
            	<Route path="/home/main" component={Main} />
            </div>
        </div>
    )
}

v6版本中,提供<OutLet/>组件为特定路由呈现任何匹配的子元素

<OutLet/>不需要任何参数,只为呈现子路由的输出。

import { OutLet } from 'react-router-dom'
function App() {
	return(
		<Router>
			<Route exact path="/" element={Login} />
			<Route path="/home" element={Home}>
				<Route path="/main" element={Main} />
			</Route>
		</Router>
	)
}
function Home() {
	return(
		<div>
			<OutLet />
		</div>
	)
}

:本博客仅供个人学习,如有错误、侵权敬请指出。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:32:01  更:2022-05-18 17:34:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:36:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码