React路由(React學習筆記_09)

React路由

1,路由基礎

現代的前端應用大多都是SPA(單頁應用程序),也就是只有一個HTML頁面的應用程序。因為它的用戶體驗更好、對服務器的壓力更小,所以更受歡迎。為了有效的使用單個頁面來管理原來多個頁面的功能,前端路由應運而生。

1, 安裝: yarn add react-router-dom
2, 導入路由的三個核心組件:Router/Route/Link
import {BrowserRouter as Router, Route, Link} from 'react-router-dom'3, 使用Router組件包裹整個應用
<Router><div>// ...</div>
</Router>
使用步驟:

4, 使用Link組件作為導航菜單(路由入口)

<Link to="/first">頁面一</Link/>

5, 使用Route組件配置路由規則和要展示的組件(路由出口)

const First = () => <p>頁面一的內容</p>
<Router><div>react<Link to='/first'>頁面1</Link><Route path='/first' component={First} /></div>
</Router>

2,路由組件說明

  • Router組件:包裹整個應用,一個React應用只需要使用一次
    • 兩種常見Router:HashRouter、BrowserRouter
    • HashRouter: 使用URL的哈希值實現(localhost:3000/#/first)
    • 推薦使用BrowserRouter:使用H5的history api實現(localhost:3000/first)
  • Link組件:用于指定導航鏈接(a標簽)
    • to屬性:瀏覽器地址欄中的pathname(location.pathname)
  • Route組件:指定路由展示組件相關信息
    • path屬性:路由規則
    • component屬性:展示的組件
    • Route組件寫在哪,渲染出來的組件就展示在哪

3,路由的執行過程

  • 1,點擊Link組件,修改了瀏覽器地址欄中的url
  • 2,React路由監聽到地址欄url的變化
  • 3,React路由內部遍歷所有Route組件,使用路由規則(path)與pathname進行匹配
  • 4,當路由規則(path)能匹配地址欄中的pathname時,就展示該Route組件的內容
image

4,編程式導航

  • 編程式導航:通過JS代碼實現頁面跳轉
  • history是react路由提供的,用于獲取瀏覽器歷史記錄的相關信息
  • push(path):跳轉到某個頁面,參數path表示要跳轉的路徑
  • go(n):前進或后退到某個頁面,參數n表示前進或者后退頁面的數量
class Child extends Component{handleLogin = () => {this.props.history.push('/home')}
}

5, 默認路由

  • 默認路由:進入頁面的時候就會匹配的路由
    • 默認路由path為: /
    <Route path="/" component={Home} />
    

示例:

const Home = () => <p>進入頁面的時候就展示的Home組件的內容</p>
const App = () => (<Router><div><p>編程式導航</p><Route path="/" component={Home} /></div></Router>
)

6,匹配模式

  • 模糊匹配
    • 默認情況下,react的路由是模糊匹配的
    • 模糊匹配規則,只要pathname以path開頭就會匹配成功
      • path代表route組件的path屬性
      • pathname代表 Link組件的to屬性(即location.pathname)
        比如:path為/,能夠匹配所有的pathname。path為:/first,能夠匹配所有的/first或/first/a或/first/a/b/...
  • 精確匹配
    • 給Route組件添加exact屬性即可

下篇開始項目實戰



喜歡的朋友記得點贊、收藏、關注哦!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80395.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80395.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80395.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2009-2025計算機408統考真題及解析

整理2009-2025 年計算機408統考真題及解析PDF 目錄樹&#xff1a; └── 2025考研計算機408統考真題及答案&#xff08;回憶版&#xff09;.pdf ├── 2009-2024計算機408真題解析 │ ├── 2009年計算機408統考真題解析.pdf │ ├── 2010年計算機408統考真題解析.pdf …

Mysql、Oracle、Sql Server、達夢之間sql的差異

1&#xff1a;分頁查詢 Sql Server&#xff1a; <bind name"startRow" value"(page - 1) * limit 1"/> <bind name"endRow" value"page * limit"/> SELECT *FROM (SELECT ROW_NUMBER() OVER (<if test"sortZd!…

SQL Server 常用函數

一、字符串處理函數 1. CONCAT&#xff1a;拼接字符串 語法&#xff1a;CONCAT(string1, string2, ..., stringN) 實例&#xff1a; SELECT CONCAT(Hello, , World) AS Result; 輸出&#xff1a; Result ------------- Hello World 2. SUBSTRING&#xff1a;截取子字符串 …

【通用大模型】Serper API 詳解:搜索引擎數據獲取的核心工具

Serper API 詳解&#xff1a;搜索引擎數據獲取的核心工具 一、Serper API 的定義與核心功能二、技術架構與核心優勢2.1 技術實現原理2.2 對比傳統方案的突破性優勢 三、典型應用場景與代碼示例3.1 SEO 監控系統3.2 競品廣告分析 四、使用成本與配額策略五、開發者注意事項六、替…

ABP vNext 多租戶系統實現登錄頁自定義 Logo 的最佳實踐

&#x1f680; ABP vNext 多租戶系統實現登錄頁自定義 Logo 的最佳實踐 &#x1f9ed; 版本信息與運行環境 ABP Framework&#xff1a;v8.1.5.NET SDK&#xff1a;8.0數據庫&#xff1a;PostgreSQL&#xff08;支持 SQLServer、MySQL 等&#xff09;BLOB 存儲&#xff1a;本地…

FastDFS分布式文件系統架構學習(一)

FastDFS分布式文件系統架構學習 1. FastDFS簡介 FastDFS是一個開源的輕量級分布式文件系統&#xff0c;由淘寶資深架構師余慶設計并開發。它專為互聯網應用量身定制&#xff0c;特別適合以中小文件&#xff08;如圖片、文檔、音視頻等&#xff09;為載體的在線服務。FastDFS不…

基于單片機的防盜報警器設計與實現

標題:基于51單片機的防盜報警器設計 內容:1.摘要 本文圍繞基于51單片機的防盜報警器設計展開。背景在于現代社會安全需求不斷提高&#xff0c;傳統防盜方式存在諸多不足。目的是設計一款成本低、可靠性高且易于使用的防盜報警器。方法上&#xff0c;以51單片機為核心控制單元&…

IDE/IoT/搭建物聯網(LiteOS)集成開發環境,基于 LiteOS Studio + GCC + JLink

文章目錄 概述LiteOS Studio不推薦&#xff1f;安裝和使用手冊呢?HCIP實驗的源碼呢&#xff1f; 軟件和依賴安裝軟件下載軟件安裝插件安裝依賴工具-方案2依賴工具-方案1 工程配置打開或新建工程板卡配置組件配置編譯器配置-gcc工具鏈編譯器配置-Makefile腳本其他配置編譯完成 …

【高斯擬合最終篇】Levenberg-Marquardt(LM)算法

Levenberg-Marquardt(LM)算法是一種結合高斯-牛頓法和梯度下降法的優化方法,特別適合非線性最小二乘問題,如高斯函數擬合。它通過引入阻尼因子(damping factor)平衡高斯-牛頓法的快速收斂和梯度下降法的穩定性。以下是基于之前的 gaussian_fit.py,加入 LM 算法實現高斯擬…

信道編碼技術介紹

信息與通信系統中的編碼有4 種形式&#xff1a;信源編碼、信道編碼、密碼編碼和多址編碼。 其中信道編碼的作用是對信源經過壓縮后的數據加一定數量受到控制的冗余&#xff0c;使得數據在傳輸中或接收中發生的差錯可以被糾正或被發現&#xff0c;從而可以正確恢復出原始數據信息…

線性回歸策略

一種基于ATR(平均真實范圍)、線性回歸和布林帶的交易策略。以下是對該策略的全面總結和分析: 交易邏輯思路 1. 過濾條件: - 集合競價過濾:在每個交易日的開盤階段,過濾掉集合競價產生的異常數據。 - 價格異常過濾:排除當天開盤價與最高價或最低價相同的情況,這…

WordPress Relevanssi插件時間型SQL注入漏洞(CVE-2025-4396)

免責聲明 本文檔所述漏洞詳情及復現方法僅限用于合法授權的安全研究和學術教育用途。任何個人或組織不得利用本文內容從事未經許可的滲透測試、網絡攻擊或其他違法行為。使用者應確保其行為符合相關法律法規,并取得目標系統的明確授權。 對于因不當使用本文信息而造成的任何直…

支持selenium的chrome driver更新到136.0.7103.94

最近chrome釋放新版本&#xff1a;136.0.7103.94 如果運行selenium自動化測試出現以下問題&#xff0c;是需要升級chromedriver才可以解決的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only su…

附加:TCP如何保障數據傳輸

附加&#xff1a;TCP如何保障數據傳輸 LS-NET-012-TCP的交互過程詳解 TCP 如何保障數據傳輸 TCP&#xff08;Transmission Control Protocol&#xff0c;傳輸控制協議&#xff09;是互聯網核心協議之一&#xff0c;負責在IP網絡上提供可靠的、面向連接的數據傳輸服務。它位于T…

Unity 批量將圖片從默認類型改為Sprite類型

先將該腳本放到Editor目錄下 如何使用:選中目錄,然后點擊Tool里面的批量修改按鈕 using System; using UnityEngine; using UnityEditor; using System.IO; using System.Linq;/// <summary> /// 此工具可以批量將圖片類型修改為精靈 /// </summary> public clas…

2025認證杯數學建模C題思路+代碼+模型:化工廠生產流程的預測和控制

2025認證杯數學建模C題思路代碼模型&#xff0c;詳細內容見文末名片 在化工廠的生產流程中&#xff0c;往往涉及到多個反應釜、管道和儲罐等設備。在 流水線上也有每個位置的溫度、壓力、流量等諸多參數。只有參數處于正常范 圍時&#xff0c;最終的產物才是合格的。這些參數…

Rust 學習筆記:關于 HashMap 的練習題

Rust 學習筆記&#xff1a;關于 HashMap 的練習題 Rust 學習筆記&#xff1a;關于 HashMap 的練習題以下代碼能否通過編譯&#xff1f;若能&#xff0c;輸出是&#xff1f;以下代碼能否通過編譯&#xff1f;若能&#xff0c;輸出是&#xff1f; Rust 學習筆記&#xff1a;關于 …

Vue-事件修飾符

事件修飾符 prevent &#xff08;阻止默認事件&#xff09; 超鏈接 點擊事件 代碼 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>事件修飾符</title><!-- 引入Vue --><script …

LeetCode --- 156雙周賽

題目列表 3541. 找到頻率最高的元音和輔音 3542. 將所有元素變為 0 的最少操作次數 3543. K 條邊路徑的最大邊權和 3544. 子樹反轉和 一、找到頻率最高的元音和輔音 分別統計元音和輔音的出現次數最大值&#xff0c;然后相加即可&#xff0c;代碼如下 // C class Solution {…

告別 pip:使用 uv 加速你的 Python 包管理

使用 uv:更快的 Python 包管理工具 隨著 Python 生態的演進,包管理工具也在不斷升級迭代。uv 是 Astral(同樣維護 ruff 的團隊)推出的下一代 Python 包與項目管理器,主打 單一可執行文件、極致性能,可在多數場景下取代 pip、pip-tools、pipx 與 virtualenv 等傳統工具,…