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

React路由跳轉(zhuǎn)的實(shí)現(xiàn)示例

 更新時(shí)間:2023年12月25日 10:01:08   作者:duansamve  
在React中,可以使用多種方法進(jìn)行路由跳轉(zhuǎn),本文主要介紹了React路由跳轉(zhuǎn)的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下

1. push 與 replace 模式

默認(rèn)情況下,開啟的是 push 模式,也就是說(shuō),每次點(diǎn)擊跳轉(zhuǎn),都會(huì)向棧中壓入一個(gè)新的地址,在點(diǎn)擊返回時(shí),可以返回到上一個(gè)打開的地址,

就像上圖一樣,我們每次返回都會(huì)返回到上一次點(diǎn)擊的地址中

當(dāng)我們?cè)谧x消息的時(shí)候,有時(shí)候我們可能會(huì)不喜歡這種繁瑣的跳轉(zhuǎn),我們可以開啟 replace 模式,這種模式與 push 模式不同,它會(huì)將當(dāng)前地址替換成點(diǎn)擊的地址,也就是替換了新的棧頂

我們只需要在需要開啟的鏈接上加上 replace 即可

<Link replace to={{ pathname: '/home/message/detail', state: { id: msgObj.id, title: msgObj.title } }}>{msgObj.title}</Link>

2. 編程式路由導(dǎo)航

我們可以采用綁定事件的方式實(shí)現(xiàn)路由的跳轉(zhuǎn),我們?cè)诎粹o上綁定一個(gè) onClick 事件,當(dāng)事件觸發(fā)時(shí),我們執(zhí)行一個(gè)回調(diào) replaceShow

這個(gè)函數(shù)接收兩個(gè)參數(shù),用來(lái)仿制默認(rèn)的跳轉(zhuǎn)方式,第一個(gè)是點(diǎn)擊的 id 第二個(gè)是標(biāo)題

我們?cè)诨卣{(diào)中,調(diào)用 this.props.location 對(duì)象下的 replace 方法

replaceShow = (id, title) => {
  this.props.history.replace(`/home/message/detail/${id}/${title}`)
}

同時(shí)我們可以借助 this.props.history 身上的 API 實(shí)現(xiàn)路由的跳轉(zhuǎn),例如 go、goBack 、goForward

3. withRouter

當(dāng)我們需要在頁(yè)面內(nèi)部添加回退前進(jìn)等按鈕時(shí),由于這些組件我們一般通過(guò)一般組件的方式去編寫,因此我們會(huì)遇到一個(gè)問題,無(wú)法獲得 history 對(duì)象,這正是因?yàn)槲覀儾捎玫氖且话憬M件造成的。

只有路由組件才能獲取到 history 對(duì)象

因此我們需要如何解決這個(gè)問題呢

我們可以利用 react-router-dom 對(duì)象下的 withRouter 函數(shù)來(lái)對(duì)我們導(dǎo)出的 Header 組件進(jìn)行包裝,這樣我們就能獲得一個(gè)擁有 history 對(duì)象的一般組件

我們需要對(duì)哪個(gè)組件包裝就在哪個(gè)組件下引入

// Header/index.jsx
import { withRouter } from 'react-router-dom'
// 在最后導(dǎo)出對(duì)象時(shí),用 `withRouter` 函數(shù)對(duì) index 進(jìn)行包裝
export default withRouter(index);

這樣就能讓一般組件獲得路由組件所特有的 API

4. BrowserRouter 和 HashRouter 的區(qū)別

它們的底層實(shí)現(xiàn)原理不一樣

對(duì)于 BrowserRouter 來(lái)說(shuō)它使用的是 React 為它封裝的 history API ,這里的 history 和瀏覽器中的 history 有所不同噢!通過(guò)操作這些 API 來(lái)實(shí)現(xiàn)路由的保存等操作,但是這些 API 是 H5 中提出的,因此不兼容 IE9 以下版本。

對(duì)于 HashRouter 而言,它實(shí)現(xiàn)的原理是通過(guò) URL 的哈希值,但是這句話我不是很理解,用一個(gè)簡(jiǎn)單的解釋就是

我們可以理解為是錨點(diǎn)跳轉(zhuǎn),因?yàn)殄^點(diǎn)跳轉(zhuǎn)會(huì)保存歷史記錄,從而讓 HashRouter 有了相關(guān)的前進(jìn)后退操作,HashRouter 不會(huì)將 # 符號(hào)后面的內(nèi)容請(qǐng)求。兼容性更好!

地址欄的表現(xiàn)形式不一樣

  • HashRouter 的路徑中包含 # ,例如 localhost:3000/#/demo/test

刷新后路由 state 參數(shù)改變

  • 在BrowserRouter 中,state 保存在history 對(duì)象中,刷新不會(huì)丟失
  • HashRouter 則刷新會(huì)丟失 state

到此這篇關(guān)于React 路由跳轉(zhuǎn)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)React 路由跳轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • React動(dòng)態(tài)更改html標(biāo)簽的實(shí)現(xiàn)方式

    React動(dòng)態(tài)更改html標(biāo)簽的實(shí)現(xiàn)方式

    這篇文章主要介紹了React動(dòng)態(tài)更改html標(biāo)簽的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • React中的常用Hooks分享

    React中的常用Hooks分享

    React?提供了許多常用的?Hooks,用于在函數(shù)組件中添加狀態(tài)管理、副作用處理和其他功能,本文主要介紹了其中幾個(gè)常用的,需要的可以收藏一下
    2023-07-07
  • React?Native項(xiàng)目設(shè)置路徑別名示例

    React?Native項(xiàng)目設(shè)置路徑別名示例

    這篇文章主要為大家介紹了React?Native項(xiàng)目設(shè)置路徑別名實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 使用React組件編寫溫度顯示器

    使用React組件編寫溫度顯示器

    這篇文章主要為大家詳細(xì)介紹了使用React組件編寫溫度顯示器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • React實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)(左右聯(lián)動(dòng))

    React實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)(左右聯(lián)動(dòng))

    這篇文章主要為大家詳細(xì)介紹了React實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 搭建React?Native熱更新平臺(tái)的詳細(xì)過(guò)程

    搭建React?Native熱更新平臺(tái)的詳細(xì)過(guò)程

    這篇文章主要介紹了搭建React?Native熱更新平臺(tái),要實(shí)現(xiàn)?React?Native?熱更新功能,有四種思路?Code?Push、Pushy、Expo?和自研,感興趣的朋友一起通過(guò)本文學(xué)習(xí)吧
    2022-05-05
  • React函數(shù)組件與類的區(qū)別有哪些

    React函數(shù)組件與類的區(qū)別有哪些

    函數(shù)式組件的基本意義就是,組件實(shí)際上是一個(gè)函數(shù),不是類,下面這篇文章主要給大家介紹了關(guān)于React中函數(shù)組件與類的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • react跳轉(zhuǎn)后路由變了頁(yè)面沒刷新的解決

    react跳轉(zhuǎn)后路由變了頁(yè)面沒刷新的解決

    這篇文章主要介紹了react跳轉(zhuǎn)后路由變了頁(yè)面沒刷新的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • React Fiber中面試官最關(guān)心的技術(shù)話題

    React Fiber中面試官最關(guān)心的技術(shù)話題

    這篇文章主要為大家介紹了React Fiber中面試官最關(guān)心的技術(shù)話題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • React基礎(chǔ)-JSX的本質(zhì)-虛擬DOM的創(chuàng)建過(guò)程實(shí)例分析

    React基礎(chǔ)-JSX的本質(zhì)-虛擬DOM的創(chuàng)建過(guò)程實(shí)例分析

    這篇文章主要介紹了React基礎(chǔ)-JSX的本質(zhì)-虛擬DOM的創(chuàng)建過(guò)程,結(jié)合具體實(shí)例形式分析了虛擬dom的基本原理與實(shí)現(xiàn)方法,需要的朋友可以參考下
    2023-05-05

最新評(píng)論

云和县| 杭州市| 北京市| 蛟河市| 盖州市| 新津县| 张北县| 息烽县| 太康县| 芮城县| 洪江市| 文昌市| 普安县| 海安县| 广平县| 和硕县| 孝感市| 湘潭县| 秦安县| 广西| 玉山县| 自贡市| 合肥市| 历史| 成都市| 三门县| 托克逊县| 南宫市| 社旗县| 崇文区| 河西区| 苏尼特左旗| 神池县| 沁源县| 永康市| 息烽县| 白河县| 青海省| 长岛县| 富阳市| 卓尼县|