react路由基礎

1.目錄

A. 能夠說出React路由的作用
B. 能夠掌握react-router-dom的基本使用
C. 能夠使用編程式導航跳轉路由
D. 能夠知道React路由的匹配模式

2.目錄

A. React路由介紹
B. 路由的基本使用
C. 路由的執行過程
D. 編程式導航
E. 默認路由
F. 匹配模式

3.react路由介紹

現代的前端應用大多都是SPA(單頁應用程序),也就是只有一個HTML頁面的應用程序。因為它的用戶體
驗更好、對服務器的壓力更小,所以更受歡迎。為了有效的使用單個頁面來管理原來多頁面的功能,前
端路由應運而生。
A. 前端路由的功能:讓用戶從一個視圖(頁面)導航到另一個視圖(頁面)
B. 前端路由式一套映射規則,在React中,是URL路徑與組件的對應關系
C. 使用React路由簡單來說,就是配置路徑和組件(配對)

4.路由的基本使用

4.1 基本使用

A. 安裝:yarn/npm add react-router-dom
B. 導入路由的三個核心組件:Router/Route/Link
import { BrowserRouter as Router, Route, Link} from ‘react-router-dom’
C.使用Router組件包裹整個應用(重要)

<Router>
<div className=”App”>
//......省略頁面內容
</div>
</Router>

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

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

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

import { BrowserRouter as Router, Routes, Route, Link } from "react-router-dom";
const First = () => <p>頁面一的內容</p>;
const App4 = () => {return (// 使用 Router 包裹整個應用<Router><div><h1>React路由基礎</h1>{/* 指定路由入口  */}<Link to="/first">頁面1</Link>{/* 指定路由出口 */}<Routes><Route path="/first" element={<First></First>}></Route></Routes></div></Router>);
};
ReactDOM.createRoot(document.getElementById("root")).render(<App4></App4>);

4.2 常用組件說明

A. Router組件:包裹整個應用,一個React應用只需要使用一次
B. 兩種常用Router:HashRouter和BrowserRouter
C. HashRouter:使用URL的哈希值實現(localhost:3000/#/first)
D. (推薦)BrowserRouter:使用H5的history API實現(localhost:3000/first)
E. Link組件:用于指定導航鏈接(a標簽)
F. Route組件:指定路由展示組件相關信息

import { BrowserRouter as Router, Routes, Route, Link } from "react-router-dom";
const First = () => <p>頁面一的內容</p>;
const App4 = () => {return (// 使用 Router 包裹整個應用<Router><div><h1>React路由基礎</h1>{/* 指定路由入口  */}<Link to="/first">頁面1</Link>{/* 指定路由出口 */}{/* path:路由規則element:指定組件就展示在哪里Route 組件寫在哪里,渲染出來的組件*/}<Routes><Route path="/first" element={<First></First>}></Route></Routes></div></Router>);
};
ReactDOM.createRoot(document.getElementById("root")).render(<App4></App4>);

5.路由的執行過程

A. 點擊Link組件(a標簽),修改了瀏覽器地址欄中的url
B. React路由監聽到地址欄url的變化
C. React路由內部遍歷所有Route組件,使用路由規則(path)與pathname進行匹配
D. 當路由規則(path)能夠匹配地址欄中的pathname時,就展示該Route組件的內容
在這里插入圖片描述

import { BrowserRouter as Router, Routes, Route, Link } from "react-router-dom";
const First = () => <p>頁面一的內容</p>;
const Home = () => <h1>首頁的內容</h1>;
const App4 = () => {return (// 使用 Router 包裹整個應用<Router><div><h1>React路由基礎</h1>{/* 指定路由入口  */}<Link to="/first">頁面1</Link><Link to="/home">首頁</Link>{/* 指定路由出口 */}{/* path:路由規則element:指定組件就展示在哪里Route 組件寫在哪里,渲染出來的組件*/}<Routes><Route path="/first" element={<First></First>}></Route><Route path="/home" element={<Home></Home>}></Route></Routes></div></Router>);
};
ReactDOM.createRoot(document.getElementById("root")).render(<App4></App4>);

在這里插入圖片描述

6.編程式導航

A. 場景:點擊登錄按鈕,登錄成功后,通過代碼跳轉到后臺首頁,如何實現?
B. 編程式導航:通過JS代碼來實現頁面跳轉
C. History是React路由提供的,用于獲取瀏覽器歷史記錄的相關信息
D. push(path):跳轉到某個頁面,參數path表示要跳轉的路徑
E. go(n):前進或后退到某個頁面,參數n表示前進或后退頁面數量(比如:-1表示后退到上一頁)
8.history.js

import React from "react";
import {BrowserRouter as Router,Routes,Route,Link,useNavigate,
} from "react-router-dom";
function Login() {let navigate = useNavigate();const handleClick = () => {navigate("/home");};return (<div><p>我是登錄頁</p><button onClick={handleClick}>登錄</button></div>);
}const Home = () => {let navigate = useNavigate();function goBack() {navigate(-1);}return (<div><h1>后臺首頁</h1><button onClick={goBack}>返回上一頁</button></div>);
};const App60 = () => {return (<Router><div><h1>編程式導航</h1><Link to="/login">去登錄頁面</Link><Link to="/home">首頁</Link><Routes><Route path="/login" element={<Login></Login>}></Route><Route path="/home" element={<Home></Home>}></Route></Routes></div></Router>);
};export default App60;

index.js

import App60 from "./8history";
ReactDOM.createRoot(document.getElementById("root")).render(<App60></App60>);

7.默認路由

A. 問題:現在的路由都是點擊導航菜單后展示的,如何在進入頁面的時候就展示呢?
B. 默認路由:表示進入頁面時就會匹配的路由
C. 默認路由path為:/
在這里插入圖片描述

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

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

相關文章

開源項目:圖像分類技術在醫療影像分析中的應用與實踐

一、引言 在當今快速發展的醫療行業中&#xff0c;數字醫療正逐漸成為提升醫療服務質量和效率的關鍵力量。本項目旨在通過整合醫藥電商、遠程問診、慢病管理等多維度服務&#xff0c;為消費者和企業提供全面的醫療解決方案。項目的核心在于運用先進的圖像分類技術&#xff0c;以…

回歸測試:在不斷變化的環境中確保軟件的穩定性

軟件開發是一個復雜的過程&#xff0c;需要不斷變化和更新以滿足客戶不斷變化的需求&#xff0c;但它們也可能產生新問題或導致舊問題重新出現。這就是回歸測試的用武之地——它是在不斷變化的環境中確保軟件穩定性的重要組成部分。 在這篇文章中&#xff0c;我們將深入探討什…

第40期 | GPTSecurity周報

GPTSecurity是一個涵蓋了前沿學術研究和實踐經驗分享的社區&#xff0c;集成了生成預訓練Transformer&#xff08;GPT&#xff09;、人工智能生成內容&#xff08;AIGC&#xff09;以及大語言模型&#xff08;LLM&#xff09;等安全領域應用的知識。在這里&#xff0c;您可以找…

基于springboot + vue實現的前后端分離-在線旅游網站系統(項目 + 論文)

項目介紹 本旅游網站系統采用的數據庫是MYSQL &#xff0c;使用 JSP 技術開發&#xff0c;在設計過程中&#xff0c;充分保證了系統代碼的良好可讀性、實用性、易擴展性、通用性、便于后期維護、操作方便以及頁面簡潔等特點。 技術選型 后端: SpringBoot Mybatis 數據庫 : MyS…

Qt 使用windows注冊表保存設置

重點&#xff1a; 1.在構造函數中初始化&#xff0c;確認注冊表中的一個目錄 QApplication::setOrganizationName("WWB-Qt");QApplication::setApplicationName("samp7_5"); 只要使用下面語句定義變量setting QSettings setting 表示setting指向注冊表目…

UE5 文字游戲(1) 僅UI截圖轉換為texture2d(適用于window端)

目錄 需求 思路 1.截圖并讀取到本地 2.本地讀取圖片并轉換為紋理2d 效果展示 找了好多的解決辦法&#xff0c;都不管用。這個算是折中的。 需求 將當前的用戶控件&#xff08;ui&#xff09;截圖下來&#xff0c;并賦值到一個texture2d上。 我的需求&#xff1a;文字游戲…

初學JavaWeb開發總結

0 什么是Web開發 Web: 全球廣域網&#xff0c;又稱萬維網(www World Wide Web)&#xff0c;能夠通過瀏覽器訪問的網站。 Web開發&#xff0c;就是開發網站的&#xff0c;如&#xff1a;淘寶、京東等等。 1 網站的工作流程 流程&#xff1a; 瀏覽器先向前端服務器請求前端資…

Cesium 自定義Primitive-線

一、創作思路 1、創建一個自定義CustomPrimitive 2、可動態更新線的點位 3、方便后期繪制線 二、實現代碼 1、創建一個CustomPolylinePrimitive類,并加入更新的代碼 export default class CustomPolylinePrimitive {constructor(options) {this._props options;/*** 渲染列表…

EchoServer回顯服務器封裝與測試

目錄 類實現 編譯測試 這一篇本質上是為了TcpServer而做的一層封裝,讓外界調用更加簡潔 參考上文 TcpServer服務器管理模塊(模塊十)-CSDN博客 類實現 echo.hpp #include "../server.hpp"class EchoServer { private:TcpServer _server;private:void OnConnect…

貝葉斯分類器

貝葉斯分類器 1. 引言 貝葉斯分類器是一種基于貝葉斯定理的分類算法&#xff0c;它利用特征之間的關系和類別的先驗概率來進行分類。貝葉斯分類器在文本分類、垃圾郵件過濾、醫學診斷等領域有著廣泛的應用。 貝葉斯分類算法是統計學的一種分類方法&#xff0c;是一類利用概率…

vite打包構建時環境變量(env)生成可配置的js文件

現實需求 在vite開發過程中&#xff0c;一些變量可以放在.env&#xff08;基礎公共部分變量&#xff09;.env.dev&#xff08;開發環境&#xff09;、.env.production&#xff08;生產環境&#xff09;中管理&#xff0c;通常分成開發和生產兩個不同的配置文件管理&#xff0c…

方法區的垃圾收集

方法區的垃圾收集 主要回收兩部分內容廢棄的常量和不再使用的類型 廢棄的常量&#xff1a; 假如一個字符串“java”曾經進入常量池中&#xff0c;但是當前系統又沒有任何一個字符串對象的值是“java”&#xff0c;換句話說&#xff0c;已經沒有任何字符串對象引用常量池中的“…

三天學會阿里分布式事務框架Seata-應用seata AT模式方案解決分布式事務問題

鋒哥原創的分布式事務框架Seata視頻教程&#xff1a; 實戰阿里分布式事務框架Seata視頻教程&#xff08;無廢話&#xff0c;通俗易懂版&#xff09;_嗶哩嗶哩_bilibili實戰阿里分布式事務框架Seata視頻教程&#xff08;無廢話&#xff0c;通俗易懂版&#xff09;共計10條視頻&…

dolphinscheduler海豚調度(四)釘釘告警

在之前的博文中&#xff0c;我們已經介紹了DolphinScheduler海豚調度的基本概念和工作流程&#xff0c;以及Shell任務和SQL任務的實踐。今天&#xff0c;讓我們來學習DolphinScheduler中的另一個重要功能&#xff1a;釘釘告警。 釘釘群添加機器人 在釘釘群添加機器人&#xf…

SpringBoot 使用@Async 注解實現異步任務

前言 在現代應用程序中&#xff0c;異步編程已經成為了必備的技能。異步編程使得應用程序可以同時處理多個請求&#xff0c;從而提高了應用程序的吞吐量和響應速度。在 SpringBoot 中&#xff0c;我們可以使用 Async 注解來實現異步編程。本文將介紹 Async 注解的使用方法和注…

從http到websocket

閱讀本文之前&#xff0c;你最好已經做過一些websocket的簡單應用 從http到websocket HTTP101HTTP 輪詢、長輪詢和流化其他技術1. 服務器發送事件2. SPDY3. web實時通信 互聯網簡史web和httpWebsocket協議1. 簡介2. 初始握手3. 計算響應健值4. 消息格式5. WebSocket關閉握手 實…

Redis 緩存數據庫

redis 中文網 http://www.redis.cn/ redis.net.cn 兩種數據庫陣營 1.關系型數據庫 MySQL Oracle DB2 SQL Server 等基于二維表結構存儲數據的文件型磁盤數據庫 缺點: 因為數據庫的特征是磁盤文件型數據庫, 就造成每次查詢都有IO操作, 海量數據查詢速度較慢 2.NoSQL數據庫 …

C++中的常對象、常函數

一、常對象的概念 常對象就是用 const 修飾的對象&#xff0c;常對象必須初始化且不可被修改。 //以日期類對象為例 const Date d1(2004, 5, 25); 二、常對象只能調用常函數 常對象只能調用常函數&#xff0c;不能調用其他函數。 以日期類為例&#xff0c;類中有成員函數P…

lv20 QT 常用控件 2

1 QT GUI 類繼承簡介 布局管理器 輸出控件 輸入控件 按鈕 容器 2 按鈕示例 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QCheckBox> #include <QLineEdit> #include <QPushButton>class Widget : public QWidget {Q_OBJECTpublic…

SLAM面試代碼題:點云去畸變

題目 假設已知一幀點云每個點的時間戳和它的位姿,要求對點云去畸變 解題思路 定義一個點云的struct利用時間戳,把一幀內每個時刻的點云都變換到這一幀的起始時間處位置使用線性插值,旋轉使用球面非線性插值// 點云去畸變 #include <iostream> #include <Eigen/Co…