最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react-router?v6新特性總結示例詳解

 更新時間:2022年12月26日 15:05:36   作者:xiangzhihong8  
在V6版本中,<Switch>組件被替換成<Routes>組件,同時,component屬性被element屬性替換,這篇文章主要介紹了react-router?v6新特性總結,需要的朋友可以參考下

由于之前的項目一直使用的是V5版本,最新新建項目的時候,默認使用的是V6版本,根據官方的介紹,V6版本的新特性如下。

新特性

  • <Switch>重命名為<Routes>
  • <Route>的新特性變更;
  • 嵌套路由變得更簡單;
  • 新鉤子useRoutes代替react-router-config;
  • 用useNavigate代替useHistory;
  • Link不再支持component 屬性;
  • NavLink的exact屬性替換為end
  • 大小減少:從20kb到8kb

<Switch>重命名為<Routes>

在V6版本中,<Switch>組件被替換成<Routes>組件,同時,component屬性被element屬性替換。

/* v5 */
<Switch>
  <Route exact path="/" component={Home} />
  <Route path="/user/:id" render={(routeProps) => <User id={routeProps.match.params.id} />} />
</Switch>

/* V6 */
<Routes>
  <Route path="/" element={<Home />} />
  <Route path="user/:id" element={<User id={id} />} />
</Routes>

同時,組件還修改了如下一些內容:

  • 廢棄exact
  • component/render被element替代
  • routeProps可以在element中直接獲取
  • 簡化的路徑匹配,僅支持動態(tài):id樣式參數和*通配符,不再支持RegExp

支持嵌套路由

在V6版本中, <Route>標簽支持嵌套,可以在一個文件內配置嵌套路由,便于統(tǒng)一管理路由。

import { HashRouter as Router, Routes, Route } from 'react-router-dom'
import Home from '@/pages/demo/Home'
import Foo from '@/pages/demo/Foo'
import Bar from '@/pages/demo/Bar'
import BarDetail from '@/pages/demo/BarDetail'
import '@/assets/style/App.css'
function App() {
 return (
   <Router>
     <Routes>
       <Route path="/" element={<Home />} />
       <Route path="foo" element={<Foo />} />
       {/* 嵌套路由場景:需要在Bar(父路由的組件)聲明Outlet組件,用于渲染子路由 */}
       <Route path="bar" element={<Bar />}>
         <Route path=":id" element={<BarDetail />} />
       </Route>
     </Routes>
   </Router>
 )
}
export default App

Outlet

在嵌套路由場景,我們需要在父路由中使用Outlet組件,用于渲染子路由。

import { Outlet } from 'react-router-dom'
function Bar() {
  return (
    <div>
      <div>Bar</div>
      {/* 有嵌套路由的場景需要使用 */}
      <Outlet />
    </div>
  )
}
export default Bar

嵌套路由可配置化

在V6版本中,我們可以使用useRoutes代替react-router-config配置。如果需要用到嵌套路由,那么Outlet組件也是必要的。

import { useRoutes } from 'react-router-dom'
import Home from '@/pages/demo/Home'
import Foo from '@/pages/demo/Foo'
import Bar from '@/pages/demo/Bar'
import BarDetail from '@/pages/demo/BarDetail'
import '@/assets/style/App.css'
function App() {
  let element = useRoutes([
    {
      path: '/',
      element: <Home />
    },
    {
      path: 'foo',
      element: <Foo />
    },
    {
      path: 'bar',
      element: <Bar />,
      children: [
        {
          path: ':id',
          element: <BarDetail />
        }
      ]
    }
  ])
  return element
}
export default App

需要注意的是,如果是使用此方式注冊路由配置,需要在入口文件添加Router包裹App組件,否則會報錯。

import React from 'react'
import ReactDOM from 'react-dom'
import { HashRouter as Router } from 'react-router-dom'
import App from '@/App'
import '@/assets/style/index.css'
ReactDOM.render(
  <React.StrictMode>
    <Router>
      <App />
    </Router>
  </React.StrictMode>,
  document.getElementById('root')
)

useNavigate代替useHistory

/* v5 */
const history = useHistory()
history.push('/home')
history.replace('/home')
history.goBack()
history.goForward()
history.go(2)
/* V6 */
const navigate = useNavigate()
navigate('/home')
navigate('/home', {replace: true})
navigate(-1)
navigate(1)
navigate(2)

參考說明:https://reactrouterdotcom.fly.dev/

到此這篇關于react-router v6新特性總結的文章就介紹到這了,更多相關react-router v6新特性內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于React+Redux的SSR實現方法

    基于React+Redux的SSR實現方法

    這篇文章主要介紹了基于React+Redux的SSR實現方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • React Hook - 自定義Hook的基本使用和案例講解

    React Hook - 自定義Hook的基本使用和案例講解

    自定義Hook本質上只是一種函數代碼邏輯的抽取,嚴格意義上來說,它本身并不算React的特性,這篇文章主要介紹了React類組件和函數組件對比-Hooks的介紹及初體驗,需要的朋友可以參考下
    2022-11-11
  • 淺談react前后端同構渲染

    淺談react前后端同構渲染

    本篇文章主要介紹了淺談react前后端同構渲染,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • React詳細講解JSX和組件的使用

    React詳細講解JSX和組件的使用

    jsx就是javsscript與xml結合的一種格式,是js語法的一種擴展,只要把html代碼寫在js中就是jsx。react中定義組件有3種寫法:函數的方式、es5的寫法、es6(類)的寫法
    2022-08-08
  • 詳細聊聊React源碼中的位運算技巧

    詳細聊聊React源碼中的位運算技巧

    眾所周知在React中,主要用到3種位運算符 —— 按位與、按位或、按位非,下面這篇文章主要給大家介紹了關于React源碼中的位運算技巧的相關資料,需要的朋友可以參考下
    2021-10-10
  • React Native設備信息查看調試詳解

    React Native設備信息查看調試詳解

    這篇文章主要為大家介紹了React Native設備信息查看調試詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • React router動態(tài)加載組件之適配器模式的應用詳解

    React router動態(tài)加載組件之適配器模式的應用詳解

    這篇文章主要介紹了React router動態(tài)加載組件之適配器模式的應用 ,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • 關于React動態(tài)修改元素樣式的三種方式

    關于React動態(tài)修改元素樣式的三種方式

    這篇文章主要介紹了關于React動態(tài)修改元素樣式的三種方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • React Native懸浮按鈕組件的示例代碼

    React Native懸浮按鈕組件的示例代碼

    本篇文章主要介紹了React Native懸浮按鈕組件的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2018-04-04
  • React中使用react-file-viewer問題

    React中使用react-file-viewer問題

    這篇文章主要介紹了React中使用react-file-viewer問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評論

锡林浩特市| 盘山县| 正镶白旗| 工布江达县| 兴国县| 栖霞市| 南康市| 固镇县| 汉沽区| 河源市| 肇州县| 涟源市| 正阳县| 长治县| 响水县| 兴义市| 兴化市| 邛崃市| 安岳县| 明星| 将乐县| 信宜市| 阿瓦提县| 德安县| 樟树市| 来凤县| 雷州市| 田阳县| 吉水县| 南陵县| 普洱| 龙胜| 兰坪| 白水县| 南郑县| 大关县| 怀安县| 大厂| 锦屏县| 桃源县| 收藏|