国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

<React-Router>超全react路由知識(shí)點(diǎn)(跳轉(zhuǎn)、傳參、子路由、重定向等)

這篇具有很好參考價(jià)值的文章主要介紹了<React-Router>超全react路由知識(shí)點(diǎn)(跳轉(zhuǎn)、傳參、子路由、重定向等)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

一、路由環(huán)境配置

1.搭建一個(gè)項(xiàng)目名為boke(自定義),編輯文檔語(yǔ)言為TypeScript的項(xiàng)目環(huán)境。

2.安裝所有package.json中的依賴----安裝包(注意要【cd 項(xiàng)目名】進(jìn)入項(xiàng)目文件安裝)

3.添加React-Router路由

4.文件、目錄相關(guān)修改與搭建

二、路由的懶加載

?三、路由跳轉(zhuǎn)

1.標(biāo)簽跳轉(zhuǎn)(聲明式跳轉(zhuǎn))---a標(biāo)簽、Link標(biāo)簽?

2.編程式跳轉(zhuǎn)?---useNavigate

?四、路由傳參

1. url傳參 ————直接使用navigate

2.state傳參 (常用)

3.params傳參

五、配置符" * "

六、路由嵌套

1.方法一

(1).在父路由后面增加" / * ",表示可以有子組件

(2).配置子路由選項(xiàng)

(3).將子路由文件導(dǎo)入父路由文件中

?2.方法二

3.注意事項(xiàng)

七、路由重定向

1.方法一

2.方法二

3.方法三

八、路由鑒權(quán)

方法一:組件傳參

方法二:插槽


一、路由環(huán)境配置

1.搭建一個(gè)項(xiàng)目名為boke(自定義),編輯文檔語(yǔ)言為TypeScript的項(xiàng)目環(huán)境。

create-react-App boke --template typescript

2.安裝所有package.json中的依賴----安裝包(注意要【cd 項(xiàng)目名】進(jìn)入項(xiàng)目文件安裝)

npm i

3.添加React-Router路由

(a)ts開(kāi)發(fā)情況下,  下載模塊"react-router-dom"和 "@types/react-router-dom"

npm i --save react-router-dom @types/react-router-dom

(b)js開(kāi)發(fā)情況下,    只需下載模塊"react-router-dom" 

擴(kuò)展:

  • --save -dev:某些腳手架只在開(kāi)發(fā)階段起作用,項(xiàng)目打包的時(shí)候不會(huì)被打包,表示下載的這個(gè)包非項(xiàng)目依賴,縮寫(xiě)-D
  • --save則表示開(kāi)發(fā)階段需要,項(xiàng)目打包也被打包。(npm版本5.6以上,默認(rèn)下載--save)縮寫(xiě)-S

注意本篇文章的編寫(xiě)按照一下版本號(hào)進(jìn)行的

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

4.文件、目錄相關(guān)修改與搭建

????????將src文件目錄下只留下文件App.tsx和index.tsx,自己設(shè)計(jì)建立路由文件夾router,網(wǎng)站頁(yè)面文件夾views,新建文件home(首頁(yè)),user(個(gè)人中心頁(yè)),error(不輸入網(wǎng)址錯(cuò)誤時(shí)進(jìn)入的頁(yè)面)。

App.tsx:

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

index.tsx:

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

?配置路由文件(以下只寫(xiě)了一級(jí)路由)

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

?其中"?/ "表示端口號(hào)后面什么都沒(méi)有輸入或者只輸入了" / "

其中?"?/ * "表示沒(méi)有能匹配上的進(jìn)入的頁(yè)面

二、路由的懶加載

????????我們?nèi)绻裆厦孢@么寫(xiě)全部頁(yè)面都用import引入,項(xiàng)目打包的時(shí)候就會(huì)將這些網(wǎng)頁(yè)代碼全部都打包,極大浪費(fèi)內(nèi)存資源。我們可以使用路由的懶加載(用戶輸入該網(wǎng)址才會(huì)打包該文件)————>React,lazy()

????????這里介紹幾個(gè)標(biāo)簽<Suspense>占位組件,當(dāng)懶加載組件還沒(méi)有加載出來(lái)的時(shí)候,先用占位組件顯示。里面有一個(gè)屬性fallback,里面?zhèn)鬟M(jìn)去的組件就是占位組件。有<Suspense>表示該組件懶加載出來(lái)的,決定是否懶加載出來(lái)的看是不是React.lazy().

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

?三、路由跳轉(zhuǎn)

????????路由跳轉(zhuǎn)有標(biāo)簽跳轉(zhuǎn)-聲明式跳轉(zhuǎn),用ts、js程序?qū)崿F(xiàn)跳轉(zhuǎn)的是編程式跳轉(zhuǎn)

1.標(biāo)簽跳轉(zhuǎn)(聲明式跳轉(zhuǎn))---a標(biāo)簽、Link標(biāo)簽?

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

跳轉(zhuǎn)路徑: “/user”是以斜杠開(kāi)頭,表示相對(duì)根路徑,當(dāng)前網(wǎng)址的根是3000端口,直接在3000端口后面寫(xiě)“/user”。

提問(wèn):a標(biāo)簽跳轉(zhuǎn)和Link跳轉(zhuǎn)有什么區(qū)別?

a標(biāo)簽作為一種網(wǎng)絡(luò)連接,會(huì)重新請(qǐng)求網(wǎng)頁(yè),導(dǎo)致頁(yè)面刷新,而Link標(biāo)簽只是用DOM操作將頁(yè)面中的標(biāo)簽切換,通過(guò)網(wǎng)址來(lái)切換組件。

2.編程式跳轉(zhuǎn)?---useNavigate

useNavigate(路由框架自定義hook,非React官方提供)

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

?四、路由傳參

????????在說(shuō)路由傳參之前,先了解如何獲取到當(dāng)前路由信息

  //導(dǎo)入
  import {useNavigate, useLocation, useParams } from 'react-router-dom'
  
  let navigate = useNavigate()
  // /* 手寫(xiě)實(shí)現(xiàn)獲取到url中?后的參數(shù)信息 */
  let localtion = useLocation()
  let params = useParams()
  console.log(localtion, params, "--------------");
  // //localtion路由信息對(duì)象
  // //params針對(duì)于state傳參

localtion對(duì)象

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端????????

????????路由傳參在我們項(xiàng)目開(kāi)發(fā)中經(jīng)常會(huì)遇到,比如商品點(diǎn)進(jìn)詳情頁(yè),而不同商品的詳情頁(yè)-不同在于內(nèi)容不一樣,我們?cè)诎l(fā)送網(wǎng)絡(luò)請(qǐng)求獲取到所點(diǎn)擊商品的詳情時(shí),我們路由跳轉(zhuǎn)的時(shí)候傳參,再將參數(shù)發(fā)送給后端,后端判斷返回?cái)?shù)據(jù)給前端。??????

????????那么路由如何傳參呢?我們模擬點(diǎn)擊商品進(jìn)入詳情頁(yè),使用假數(shù)據(jù)

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

1. url傳參 ————直接使用navigate

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

?跳轉(zhuǎn)時(shí),參數(shù)在url中,目標(biāo)參數(shù)需要手動(dòng)解析

??在這里再擴(kuò)充一個(gè)小知識(shí)點(diǎn),手寫(xiě)函數(shù)解析url的querystring,以下可以獲取到url中”?"后的參數(shù)

  /* 手寫(xiě)實(shí)現(xiàn)獲取到url中?后的參數(shù)信息 */
  let localtion = useLocation()
  let params = useParams()
  console.log(localtion, params, "--------------");
  //localtion路由信息對(duì)象
  //params針對(duì)于動(dòng)態(tài)路由傳參--params傳參
  let queryobj:any={}
  localtion.search.split("?")[1].split("&").forEach(el=>{
    var arr=el.split("=")
    queryobj[arr[0]]=arr[1]
  })
  console.log(queryobj);

2.state傳參 (常用)

state傳參優(yōu)點(diǎn):state傳入?yún)?shù),用戶通過(guò)點(diǎn)擊商品進(jìn)入詳情頁(yè)(兩個(gè)頁(yè)面有直接聯(lián)系),會(huì)將state的數(shù)據(jù)存到緩存中,并不是像url傳參拼接到url后面(注意此時(shí)是同一個(gè)瀏覽器頁(yè)面實(shí)現(xiàn)的路由跳轉(zhuǎn),此緩存類似于sessionStorage,緩存數(shù)據(jù)不在不同的瀏覽器頁(yè)面中共享),當(dāng)這時(shí)候有其他人用此鏈接直接搜索時(shí),不存在state參數(shù)數(shù)據(jù)。

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

?state傳參獲取到參數(shù)數(shù)據(jù),直接取值 location.state

3.params傳參

    /* 第三種 params傳參(動(dòng)態(tài)路由傳參) */
    navigate("/user/0315")

????????其中這第一個(gè)數(shù)據(jù)user表示路由,第二個(gè)數(shù)據(jù)0315表示參數(shù),params傳參也叫動(dòng)態(tài)路由傳參,參數(shù)放在網(wǎng)址中。放在passname中。

需要滿足三個(gè)地方條件

(1)注冊(cè)————":"冒號(hào)后面表示變量,該變量保存參數(shù)

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

(2)跳轉(zhuǎn)——跳轉(zhuǎn)格式跟注冊(cè)格式對(duì)應(yīng)

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

(3)接收需要params接收

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

五、配置符" * "

<Route path="/*" element={<組件/>}></Route>

" * "表示其他路由沒(méi)有被匹配到,就會(huì)匹配”配置符“后的組件。(注意已經(jīng)更改了,以前此符號(hào)表示寫(xiě)在此符號(hào)前面的路由沒(méi)有被匹配到,就匹配此符號(hào)的組件,后面的路由不會(huì)接著被匹配。所以以前需要將"*"路由寫(xiě)在最后,而現(xiàn)在沒(méi)有影響,放在哪都行)

六、路由嵌套

1.方法一

(1).在父路由后面增加" / * ",表示可以有子組件

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

(2).配置子路由選項(xiàng)

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

(3).將子路由文件導(dǎo)入父路由文件中

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

?2.方法二

????????除了單獨(dú)一個(gè)文件配置子路由之外,我們還可以直接在父路由組件文件中配置子路由,這樣的好處就是方便管理。同樣的父路由需要加上“/*”。

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

3.注意事項(xiàng)

  • 父路由后面必須加“/*”,因?yàn)槟阒挥羞M(jìn)入了父路由——父路由組件代碼,你才有機(jī)會(huì)加載父路由文件中的子路由代碼。
  • 只有在根路由中才會(huì)啟用路由模式<Router>__BrowserRouter,整個(gè)網(wǎng)站只有一個(gè)。

七、路由重定向

1.方法一

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

2.方法二

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

3.方法三

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

八、路由鑒權(quán)

????????利用路由重定向,可以增加判斷條件實(shí)現(xiàn)路由鑒權(quán),例如我們登錄后會(huì)在瀏覽器緩存中緩存token,我們也通過(guò)瀏覽器緩存中是否含有token來(lái)判斷當(dāng)前是否有用戶登錄,在某些頁(yè)面,如果沒(méi)有登錄則需要?jiǎng)t需要跳到登錄頁(yè)面進(jìn)行登錄操作,

封裝函數(shù)組件用來(lái)路由鑒權(quán)

方法一:組件傳參

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

方法二:插槽

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端

react點(diǎn)擊跳轉(zhuǎn)路由,react.js,javascript,前端文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-680430.html

到了這里,關(guān)于<React-Router>超全react路由知識(shí)點(diǎn)(跳轉(zhuǎn)、傳參、子路由、重定向等)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • React-Router詳解

    React-Router詳解

    React-Router是一款用于構(gòu)建單頁(yè)面應(yīng)用(SPA)中處理路由的JavaScript庫(kù)。在現(xiàn)代的Web應(yīng)用中,SPA已經(jīng)成為了一種常見(jiàn)的應(yīng)用架構(gòu)模式,它允許在不刷新整個(gè)頁(yè)面的情況下進(jìn)行交互式的用戶體驗(yàn)。而React-Router作為React生態(tài)系統(tǒng)中的路由管理工具,為開(kāi)發(fā)者提供了一種簡(jiǎn)潔、靈活且強(qiáng)

    2024年02月08日
    瀏覽(26)
  • React-學(xué)習(xí)筆記(8—react-router@5 and @6)

    目錄 1、react-router@5 1-1、在項(xiàng)目中安裝路由 1-2、一個(gè)項(xiàng)目使用一個(gè)路由器來(lái)管理路由即可 1-3、 路由組件和一般組件的區(qū)別 1-4、使用 NavLink 1-5、封裝 NavLink —— MyNavLink 1-6、使用 Switch 標(biāo)簽 1-7、BrowserRouter解決多級(jí)路徑匹配樣式丟失問(wèn)題 1-8、路由的模糊匹配和嚴(yán)格匹配 1-9、路

    2024年02月12日
    瀏覽(49)
  • 創(chuàng)建react腳手架項(xiàng)目——demo(react18 + react-router 6)+ react項(xiàng)目打包部署

    創(chuàng)建react腳手架項(xiàng)目——demo(react18 + react-router 6)+ react項(xiàng)目打包部署

    全局安裝 create-react-app 說(shuō)明:不建議安裝全局,建議使用 npx 命令安裝,具體可參考官網(wǎng),如下: 官網(wǎng): https://zh-hans.legacy.reactjs.org/docs/create-a-new-react-app.html. 1.2.1 問(wèn)題1——npm ERR! code ENOTFOUND(網(wǎng)絡(luò)問(wèn)題clashx) 問(wèn)題描述,如下: 解決問(wèn)題——方式1 如果使用了clashx,可能是它

    2024年02月07日
    瀏覽(30)
  • react-router5: 地址欄變化,頁(yè)面沒(méi)變

    今天在寫(xiě) react-router demo 的時(shí)候,出現(xiàn)了一個(gè)問(wèn)題,瀏覽器地址欄變了,但是頁(yè)面沒(méi)變 手動(dòng)刷新一下就變了 解決辦法:

    2023年04月09日
    瀏覽(24)
  • 一文了解 history 和 react-router 的實(shí)現(xiàn)原理

    一文了解 history 和 react-router 的實(shí)現(xiàn)原理

    我們是袋鼠云數(shù)棧 UED 團(tuán)隊(duì),致力于打造優(yōu)秀的一站式數(shù)據(jù)中臺(tái)產(chǎn)品。我們始終保持工匠精神,探索前端道路,為社區(qū)積累并傳播經(jīng)驗(yàn)價(jià)值。 本文作者:霜序 在前一篇文章中,我們?cè)敿?xì)的說(shuō)了 react-router@3.x 升級(jí)到 @6.x 需要注意的問(wèn)題以及變更的使用方式。 react-router 版本更新

    2024年02月12日
    瀏覽(17)
  • React-Router 5.0 制作導(dǎo)航欄+頁(yè)面參數(shù)傳遞

    React-Router 5.0 制作導(dǎo)航欄+頁(yè)面參數(shù)傳遞

    使用 React 構(gòu)建 SPA 應(yīng)用(單頁(yè)面應(yīng)用),要想實(shí)現(xiàn)頁(yè)面間的跳轉(zhuǎn),首先想到的就是使用路由。在 React 中,常用的有兩個(gè)包可以實(shí)現(xiàn)這個(gè)需求,那就是 react-router 和 react-router-dom 。本文主要針對(duì) react-router-dom 進(jìn)行說(shuō)明。 眾所周知, JS 由 DOM BOM ECMAScript 組成, React-Router-Dom 使用 BOM 提供

    2024年02月08日
    瀏覽(17)
  • 超級(jí)實(shí)用!React-Router v6實(shí)現(xiàn)頁(yè)面級(jí)按鈕權(quán)限

    超級(jí)實(shí)用!React-Router v6實(shí)現(xiàn)頁(yè)面級(jí)按鈕權(quán)限

    大家好,我是王天~ 今天咱們用 reac+reactRouter來(lái)實(shí)現(xiàn)頁(yè)面級(jí)的按鈕權(quán)限功能。這篇文章分三部分,實(shí)現(xiàn)思路、代碼實(shí)現(xiàn)、踩坑記錄。 嫌啰嗦的朋友,直接拖到第二章節(jié)看代碼哦。 通常情況下,咱們?yōu)橛脩籼砑訖?quán)限時(shí),除了頁(yè)面權(quán)限,還會(huì)細(xì)化到按鈕級(jí)別,比如、新增、刪除

    2024年02月08日
    瀏覽(25)
  • 【退役之重學(xué)前端】使用vite+vue3+vue-router,重構(gòu)react+react-router前后端分離的商城后臺(tái)管理系統(tǒng)

    前言: 對(duì)前端各個(gè)技術(shù)板塊,HTML、CSS、JavaScript、ES6、vue家族,整體上能“摸其大概”。筆者計(jì)劃重構(gòu)一個(gè)基于react的商城后臺(tái)管理系統(tǒng)。 —— 2024年2月16日 vue3 sass bootstrap ES7 前后端分離 分層架構(gòu) 模塊化開(kāi)發(fā) npm vite git

    2024年02月20日
    瀏覽(25)
  • React-路由 react-router-dom

    前端路由的功能:讓用戶從一個(gè)頁(yè)面跳轉(zhuǎn)到另一個(gè)頁(yè)面。 前端路由是一套映射規(guī)則 ,在 React 中, 是 URL 路徑與組件的對(duì)應(yīng)關(guān)系 。 使用 React 路由簡(jiǎn)單來(lái)說(shuō)就是配置 路徑與組件(配對(duì)) 。 路由的本質(zhì): 一個(gè)路徑 path 對(duì)應(yīng)唯一的一個(gè)組件 component 當(dāng)我們?cè)L問(wèn)一個(gè) path 自動(dòng)把 p

    2024年02月02日
    瀏覽(30)
  • React 路由react-router-dom詳解

    React 路由react-router-dom詳解

    前面我們先了解一下 路由是什么? 路由分類有哪些??jī)?nèi)置API有哪些 ? 可能有點(diǎn)枯燥,不喜歡看的直接跳過(guò) ! 單頁(yè)Web應(yīng)用(single page web application,SPA)。 整個(gè)應(yīng)用只有一個(gè)完整的頁(yè)面。 點(diǎn)擊頁(yè)面中的鏈接不會(huì)刷新頁(yè)面,只會(huì)做頁(yè)面的局部更新。 數(shù)據(jù)都需要通過(guò)ajax請(qǐng)求獲取

    2023年04月11日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包