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

react---react router 5 基本使用

這篇具有很好參考價值的文章主要介紹了react---react router 5 基本使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1.路由介紹

2.路由使用

3.路由組件和一般組件

4.Switch 單一匹配

5.解決二級路由樣式丟失的問題

6.路由精準匹配和模糊匹配

7.Redirect路由重定向


1.路由介紹

路由是根據(jù)不同的 URL 地址展示不同的內(nèi)容或頁面,在 SPA 應用中,大部分頁面結(jié)果不改變,只改變部分內(nèi)容的使用。一個路由其實就是一個映射關(guān)系。

前端路由常見的兩種模式:hash和history

hash模式:路由上會有個#號,#后面?hash?值的變化,并不會導致瀏覽器向服務器發(fā)出請求,瀏覽器不發(fā)出請求,也就不會刷新頁面。使用 Javascript 來對 location.hash 進行賦值,改變 URL 的hash值,每次?hash?值的變化,會觸發(fā)hashchange?這個事件。然后我們便可以監(jiān)聽hashchange來實現(xiàn)更新頁面部分內(nèi)容的操作。

history模式:使用history模式可以讓URL看起來更加友好,更符合傳統(tǒng)的URL訪問習慣,不會出現(xiàn)#號,更加好看。當用戶刷新頁面之類的操作時,瀏覽器會給服務器發(fā)送請求,所以這個實現(xiàn)需要服務器的支持,需要把所有路由都重定向到根頁面(nginx配置try_files重定向到index.html),否則會出現(xiàn)404。HTML5 提供了 History API 來實現(xiàn) URL 的變化,其中最主要的 API 有以下兩個:
history.pushState() 新增一個歷史記錄
history.replaceState() 直接替換當前的歷史記錄

2.路由使用

  • 安裝【npm?i?react-router-dom@5】
  • 引入使用到的一些標簽【import{Link,Route}from?'react-router-dom'】
  • 編寫路由鏈接【Link,NavLink】
  • 注冊路由【?<Route path="/home" component={Home}></Route>】
  • 路由包裹【ReactDOM.render(<BrowserRouter> <App/> </BrowserRouter>, document.getElementById("root"));】整個?App?組件標簽采用?BrowserRouter (或使用HashRouter)標簽包裹,這樣整個?App?組件都在一個路由器的管理下。
{/*  編寫路由鏈接*/}
<Link to="/home">Home</Link>
<NavLink activeClassName="nav-active" to="/home">Home</NavLink>
<MyNavLink to="/home">Home</MyNavLink> //通過封裝把冗長的NavLink上的標簽放到組件上去了

NavLink給a標簽帶上了active屬性(高亮設置),通過activeClassName 來修改默認的高亮類名

基于NavLink封裝MyNavLink組件

【MyNavLink組件】

import React, { Component } from 'react'
import { NavLink } from 'react-router-dom/cjs/react-router-dom'

export default class MyNavLink extends Component {
  render() {
    console.log("MyNavLink接收父組件傳值props",this.props);
    return (
        <NavLink activeClassName="nav-active" {...this.props}></NavLink>
    )
  }
}

在標簽體內(nèi)寫的內(nèi)容都會成為一個?children?屬性,因此我們在調(diào)用?MyNavLink?時,在標簽體中寫的內(nèi)容,都會成為?props?中的一部分。如下MyNavLink標簽內(nèi)的內(nèi)容Home會成為props的children屬性

<MyNavLink to="/home" a={1} b={2}>Home</MyNavLink>

react---react router 5 基本使用

3.路由組件和一般組件

  • 寫法不同:一般組件【<Home/>】,路由組件【?<Route path="/home" component={Home} />】
  • 存放的位置不同:路由組件放在 pages 文件夾中,一般組件放在?components文件夾中
  • 最重要的一點就是它們接收到的?props?不同,在一般組件中,如果我們不進行傳遞,就不會收到值。而對于路由組件而言,它會接收到?3?個固定屬性?history?、location?以及?match
history:
    go: ? go(n)
    goBack: ? goBack()
    goForward: ? goForward()
    push: ? push(path, state)
    replace: ? replace(path, state)
location:
    pathname: "/about"
    search: ""
    state: undefined
match:
    params: {}
    path: "/about"
    url: "/about"

4.Switch 單一匹配

react---react router 5 基本使用

?當/about路徑匹配上了第一個About?組件后,它還會繼續(xù)向下匹配Test組件,采用?Switch?組件進行包裹后只進行單一匹配,不會再向下去匹配了,可以提高路由匹配效率。

react---react router 5 基本使用

5.解決二級路由樣式丟失的問題

當index.html以相對路徑方式引入css文件時,【 <link href="./css/bootstrap.css" rel="stylesheet">】(該文件放在public/css路徑下)在如下二級路由的情況下存在刷新頁面導致樣式丟失的問題。

<MyNavLink to = "/base/about" >About</MyNavLink>

<Route path="/base/about"component={About}/>

http://localhost:3000是webpack內(nèi)置的服務器,通過devServer開啟的。public文件夾相當于是localhost:3000的根路徑。

當刷新頁面后,獲取bootstrap.css文件的請求路徑上帶了base,并且返回狀態(tài)碼200,請求成功,這是因為請求的資源不存在時,會把index.html響應給該請求,所以狀態(tài)碼為200。

react---react router 5 基本使用

react---react router 5 基本使用

?(1)使用絕對路徑/

 <link href="/css/bootstrap.css" rel="stylesheet"> 

(2)使用PUBLIC_URL%

 <link href="%PUBLIC_URL%/css/bootstrap.css" rel="stylesheet">

(3)使用HashRouter

因為HashRouter會添加#,默認不會處理#后面的路徑,所以也是可以解決的

6.路由精準匹配和模糊匹配

路由的匹配有兩種形式,精準匹配和模糊匹配,React?中默認開啟的是模糊匹配

模糊匹配可以理解為,在匹配路由時,只要有匹配到的就好了,要求輸入的路徑必須包含匹配的路徑,且順序要一致

<MyNavLink to = "/home/a/b" >Home</MyNavLink>
<Route path="/home"component={Home}/>

精準匹配:兩者必須相同,通過exact開啟嚴格匹配

<Route exact={true}  path="/home" component={Home}/>
或者
<Route exact path="/home" component={Home}/>

嚴格匹配不要隨便開啟,需要再開,有些時候開啟會導致無法繼續(xù)匹配二級路由。

7.Redirect路由重定向

當沒有匹配到/home /about路徑時,重定向到/home路徑文章來源地址http://www.zghlxwxcb.cn/news/detail-492325.html

 <Switch>
    <Route path="/home" component={Home} />
    <Route path="/about" component={About} />
    <Redirect to="/home"/>
</Switch>

到了這里,關(guān)于react---react router 5 基本使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 【React】react-router 路由詳解

    【React】react-router 路由詳解

    ?????? ??個人主頁: 阿選不出來 ?????? ??個人簡介: 一名大二在校生,學習方向前端,不定時更新自己學習道路上的一些筆記. ?????? ??目前開發(fā)的專欄: JS ??Vue??React?? ?????? 前端路由就是把不同路由對應不同的內(nèi)容或頁面的任務交給前端來做,根據(jù)不同的url地

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

    前端路由的功能:讓用戶從一個頁面跳轉(zhuǎn)到另一個頁面。 前端路由是一套映射規(guī)則 ,在 React 中, 是 URL 路徑與組件的對應關(guān)系 。 使用 React 路由簡單來說就是配置 路徑與組件(配對) 。 路由的本質(zhì): 一個路徑 path 對應唯一的一個組件 component 當我們訪問一個 path 自動把 p

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

    React 路由react-router-dom詳解

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

    2023年04月11日
    瀏覽(22)
  • 探索React Router:實現(xiàn)動態(tài)二級路由

    探索React Router:實現(xiàn)動態(tài)二級路由

    我有一個路由配置的二維數(shù)組,想根據(jù)這個數(shù)組結(jié)合路由組件來動態(tài)生成路由,應該怎么樣實現(xiàn)。在 React Router 6 中渲染二級路由的方式跟 React Router 65相比有一些變化,但核心思路仍然是利用 Route 組件和路由嵌套的方式。下面是具體的步驟: 定義路由數(shù)組 注意,這里我們使用

    2024年04月25日
    瀏覽(26)
  • <React-Router>超全react路由知識點(跳轉(zhuǎn)、傳參、子路由、重定向等)

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

    目錄 一、路由環(huán)境配置 1.搭建一個項目名為boke(自定義),編輯文檔語言為TypeScript的項目環(huán)境。 2.安裝所有package.json中的依賴----安裝包(注意要【cd 項目名】進入項目文件安裝) 3.添加React-Router路由 4.文件、目錄相關(guān)修改與搭建 二、路由的懶加載 ?三、路由跳轉(zhuǎn) 1.標簽跳轉(zhuǎn)(

    2024年02月11日
    瀏覽(59)
  • 第三十章 React的路由基本使用

    第三十章 React的路由基本使用

    關(guān)于 React 路由,我們在學習之前先了解一下其他知識點: SPA 應用、路由的理解、 react 中如何使用路由。 SPA應用的理解 我們知道 React 腳手架給我們構(gòu)建的是一個單頁應用程序( SPA ),在頁面加載時,只會加載一個 HTML 文件,然后使用 JavaScript 動態(tài)地更新頁面內(nèi)容。這意味

    2024年02月03日
    瀏覽(20)
  • React-Router路由基礎篇(簡單易學)

    React-Router路由基礎篇(簡單易學)

    文章目錄 系列文章目錄 前言 一、pandas是什么? 二、使用步驟 1.引入庫 2.讀入數(shù)據(jù) 總結(jié) 提示:這里可以添加本文要記錄的大概內(nèi)容: 例如:隨著人工智能的不斷發(fā)展,機器學習這門技術(shù)也越來越重要,很多人都開啟了學習機器學習,本文就介紹了機器學習的基礎內(nèi)容。 (

    2024年04月14日
    瀏覽(24)
  • React07-路由管理器react-router-dom(v6)

    React07-路由管理器react-router-dom(v6)

    react-router 是一個流行的用于 React 應用程序路由的庫。它使我們能夠輕松定義應用程序的路由,并將它們映射到特定的組件,這樣可以很容易地創(chuàng)建復雜的單頁面應用,并管理應用程序的不同視圖。 react-router 是基于 React 構(gòu)建的,因此與其他 React 庫和工具集成得很好。它在許

    2024年02月02日
    瀏覽(20)
  • React 路由使用-詳細介紹

    React 路由使用-詳細介紹

    路由初使用 srcpageArticleindex.js srcrouterindex.js srcindex.js 跳轉(zhuǎn)的兩種方式 方式一 :聲明式導航跳轉(zhuǎn),原理是轉(zhuǎn)換為 a 標簽了 方式二 :命令式導航, 編程式導航是指通過useNavigate\\\"鉤子得到導航方法,然后通過調(diào)用方法以命令式的形式進行路由跳轉(zhuǎn),比如想在登錄請求完畢之后

    2024年02月14日
    瀏覽(26)
  • React Router 中的路由導航方法:push() 和 replace() 詳解

    在 React Router 中, this.props.history.push() 和 this.props.history.replace() 是用于編程式導航的兩個常用方法。它們允許我們在組件中動態(tài)地更改路由,并可選地傳遞狀態(tài)參數(shù)。本文將介紹這兩個方法的用法和區(qū)別。 push() 方法將在導航時創(chuàng)建一個新的歷史記錄條目,并將用戶重定向到新

    2024年03月15日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包