react 的路由功能
1. 安装依赖
pnpm add react-router-dom
2. 基本的路由设置(BrowserRouter)
在 main.tsx 入口文件中使用`BrowserRouter`组件来包裹整个应用。它会监听浏览器的 URL 变化。
import { StrictMode } from "react";import { createRoot } from "react-dom/client";import { BrowserRouter } from "react-router-dom";import App from "./App.tsx";createRoot(document.getElementById('root')!).render(<BrowserRouter><App /></BrowserRouter>)
3. 定义路由和组件(Routes 和 Route)
在根组件 App.tsx 定义路由和对应组件。
import { Routes, Route } from "react-router-dom";import Home from "./components/Home";import About from "./components/About";import Contact from "./components/Contact";const App = () => {return (<div><Routes><Route path="/" element={<Home />} /><Route path="/about" element={<About />} /><Route path="/contact" element={<Contact />} /></Routes></div>);};
4. 导航链接(Link)
在不刷新整个页面的情况下改变 URL 并触发相应的路由。
import React from "react";import { Link } from "react-router-dom";const Home = () => {return (<div><h1>Home Page</h1><Link to="/about">About</Link><Link to="/contact">Contact</Link></div>);};
5. 嵌套路由
例如:假设`About`组件内部还有子路由,如`About`组件中有`Team`和`History`两个子部分。
// App.jsimport { Routes, Route } from "react-router-dom";import Home from "./components/Home";import About from "./components/About";import Contact from "./components/Contact";const App = () => {return (<div><Routes><Route path="/" element={<Home />} /><Route path="/about" element={<About />}><Route path="team" element={<Team />} /><Route path="history" element={<History />} /></Route><Route path="/contact" element={<Contact />} /></Routes></div>);};
然后在`About`组件中,需要使用`Outlet`组件来显示子路由对应的组件。
import React from "react";import { Outlet } from "react-router-dom";const About = () => {return (<div><h1>About Page</h1><Outlet /></div>);};
6. 编程式导航(useNavigate)
使用`useNavigate`钩子函数。
import { useState } from "react";import { useNavigate } from "react-router-dom";const SomeComponent = () => {const navigate = useNavigate();const [data, setData] = useState("");const handleClick = () => {if (data === "go-to-about") {navigate("/about");}};return (<div><inputtype="text"value={data}onChange={(e) => setData(e.target.value)}/><button onClick={handleClick}>Navigate</button></div>);};
相关文章:
react 的路由功能
1. 安装依赖 pnpm add react-router-dom 2. 基本的路由设置(BrowserRouter) 在 main.tsx 入口文件中使用BrowserRouter组件来包裹整个应用。它会监听浏览器的 URL 变化。 import { StrictMode } from "react";import { createRoot } from …...
SurfaceFlinger学习之一:概览
SurfaceFlinger 是 Android 系统中负责合成和显示屏幕内容的关键系统服务,它运行在一个专用的进程中 (system/bin/surfaceflinger)。它的主要职责是将不同应用程序的绘制内容(即窗口或表面)组合起来,通过硬件抽象层(HA…...
Qt关于窗口一直调用paintEvent的踩坑实录
首先看以下代码: void ItemBlockWidget::paintEvent(QPaintEvent *ev) {// 先调用父类的 paintEvent 以执行默认绘制行为QWidget::paintEvent(ev);qDebug()<<"ItemBlockWidget重绘";QStyleOption opt;opt.initFrom(this);QPainter p(this);style()…...
C++11: STL之bind
C11: STL之bind 引言可调用对象的绑定绑定普通函数绑定静态函数绑定类成员函数绑定仿函数绑定Lambda 占位符std::placeholders的应用嵌套绑定参数重排序结合 STL 算法占位符传递到嵌套函数混合占位符与默认值复杂占位符组合 std::bind的原理std::bind 的设计思路简化实现示例 B…...
在线音乐播放器 —— 测试报告
自动化脚本源代码:Java: 利用Java解题与实现部分功能及小项目的代码集合 - Gitee.com 目录 前言 一、项目简介 1.项目背景 2.应用技术 (1)后端开发 (2)前端开发 (3)数据库 二、项目功能…...
等保测评讲解:安全管理中心
在数字化转型的背景下,网络安全的重要性愈发凸显,而作为中国边疆大省的黑龙江,其网络安全建设更是不可忽视。等保测评,即信息安全等级保护测评,是确保信息系统安全的关键环节。本文将详细讲解黑龙江等保测评中的安全管…...
vue3表单输入相关修饰符使用
在 Vue 3 中,.lazy、.number 和 .trim 是用于 v-model 指令的修饰符,它们可以帮助你在双向绑定时进行特定的处理。 1. .lazy 修饰符 .lazy 修饰符表示只在 input 事件之后触发更新,即输入框的内容发生变化后,只有在用户**失去焦…...
CSS笔记(二)类名复用
这里我通过两张不同位置的卡片来实现效果 代码 <!DOCTYPE html> <html><head><style>/*设置画布*/body{/* 方便排列与对齐*/display: flex; /*画布布满整个窗口*/height: 100vh;/*水平居中*/justify-content: center;/*垂直居中*/align-items: cente…...
TCP三次握手与四次挥手(TCP重传机制,2MSL)超详细!!!计算机网络
本篇是关于3次握手和四次挥手的详细解释~ 如果对你有帮助,请点个免费的赞吧,谢谢汪。(点个关注也可以!) 如果以下内容需要补充和修改,请大家在评论区多多交流~。 目录 1. TCP头部: 2. 三次握手…...
LCR 006. 两数之和 II - 输入有序数组
一.题目: LCR 006. 两数之和 II - 输入有序数组 - 力扣(LeetCode) 二.我的原始解法-暴力解法超时: class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: # 暴力解法 result [] for i in rang…...
网络安全在现代企业中的重要作用
网络安全是这个数字时代最令人担忧的事情之一。对技术的依赖性越来越强,使其同时面临多种网络威胁。其声誉和法律后果的大幅下降可能归因于一次妥协。 这使得良好的网络安全成为所有企业的选择和必需品。本文介绍了网络安全的重要性、企业中常见的网络威胁以及公司…...
关于 EKS Bottlerocket AMI 版本与 Karpenter 配置的说明
问题1: Bottlerocket AMI 版本问题 之前,后端团队发现在使用 Bottlerocket v1.26.2 AMI 版本时,存在某些问题。经过 Bottlerocket 团队调查,此行为是罕见的 race condition 导致的结果。 我们在环境中重现了此状况,并且关注到由于 kubelet device manager 的启动时间晚于 NVI…...
Python实现人生重开模拟器
目录 人生重开模拟器介绍 代码实现 打印初始界面 设置初始属性 设置角色性别 设置角色出生点 针对每一岁,生成人生经历 完整代码 人生重开模拟器介绍 人生重开模拟器 是之前比较火的一个小游戏,我们这里使用 Python 实现一个简化版的 人生重开模…...
java——Spring Boot的配置加载顺序和优先级
Spring Boot的配置加载顺序和优先级是确定应用程序如何读取和应用配置的关键。以下是对Spring Boot配置加载顺序和优先级的详细解释: 一、配置加载顺序 命令行参数: Spring Boot会首先加载命令行中指定的参数。这些参数可以通过在命令行中使用--keyval…...
【21-30期】Java技术深度剖析:从分库分表到微服务的核心问题解析
🚀 作者 :“码上有前” 🚀 文章简介 :Java 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 文章题目:Java技术深度剖析:从分库分表到微服务的核心问题解析 摘要: 本…...
CSS:怎么把网站都变成灰色
当大家看到全站的内容都变成了灰色,包括按钮、图片等等。这时候我们可能会好奇这是怎么做到的呢? 有人会以为所有的内容都统一换了一个 CSS 样式,图片也全换成灰色的了,按钮等样式也统一换成了灰色样式。但你想想这个成本也太高了…...
开发一个基于MACOS M1/2芯片的Android 12的模拟器
产品需求:MuMu模拟器Pro_率先适配Apple M系列芯片的安卓模拟器 苹果M芯片专属:产品专为苹果M系列芯片设计,意味着它需要能够充分利用M系列芯片的性能优势。 安卓模拟器:产品是一个安卓模拟器,允许用户在Mac设备上运行…...
Flink 中 JDBC Connector 使用详解
1. 背景 在实时计算或离线任务中,往往需要与关系型数据库交互,例如 MySQL、PostgreSQL 等。Apache Flink 提供了 JDBC Connector,可以方便地将流式数据写入或读取数据库。 本文将介绍 Flink JDBC Connector 的基础用法、配置方法以及注意事…...
【Linux打怪升级记 | 报错02】-bash: 警告:setlocale: LC_TIME: 无法改变区域选项 (zh_CN.UTF-8)
🗺️博客地图 📍1、报错发现 📍2、原因分析 📍3、解决办法 📍4、测试结果 1、报错发现 装好了CentOS操作系统,使用ssh远程登陆CentOS,出现如下告警信息: bash: 警告:setlocale…...
未来已来?AI技术革新改变我们的生活
在21世纪的今天,人工智能(AI)不再是一个遥远的概念,而是逐渐渗透到我们生活的方方面面。从智能家居到自动驾驶汽车,从个性化推荐系统到医疗诊断辅助,AI技术正在以惊人的速度发展,并深刻地影响着…...
思博伦TestCenter打流丢包?别急着甩锅设备,先看看这个20字节的‘隐形签名’
思博伦TestCenter打流丢包?别急着甩锅设备,先看看这个20字节的‘隐形签名’ 当你在深夜的机房里盯着思博伦TestCenter的测试报告,发现RFC2544吞吐量测试结果突然归零,而端口统计与流统计的数值差异大得离谱时,那种抓狂…...
别再为模糊监控头疼了!手把手教你用SRGAN+ResNet101搞定低清行人重识别
低清监控下的行人重识别实战:SRGAN与ResNet101的工程化融合方案 清晨的地铁站,监控摄像头捕捉到一个模糊的身影——黑色外套、深色背包,像素化的面部特征让传统识别系统束手无策。这正是当下安防领域最棘手的现实挑战:如何从低分辨…...
表格拖拽排序实战:从业务需求到代码落地的全链路指南
表格拖拽排序实战:从业务需求到代码落地的全链路指南 【免费下载链接】ngx-datatable ✨ A feature-rich yet lightweight data-table crafted for Angular 项目地址: https://gitcode.com/gh_mirrors/ng/ngx-datatable 在现代Web应用中,数据表格…...
消息防撤回技术全解析:从原理到实践的即时通讯数据保护方案
消息防撤回技术全解析:从原理到实践的即时通讯数据保护方案 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitco…...
Windows 11 + VSCode + Conda:保姆级配置Depth-Anything-3环境,一次跑通不报错
Windows 11深度视觉开发环境搭建实战:从零配置Depth-Anything-3全流程指南 当我在深夜第三次面对满屏红色报错信息时,终于意识到AI视觉项目的环境配置从来不是简单的"复制粘贴命令"就能搞定。本文将带你完整走通Windows 11系统下使用VSCode和C…...
出差党/远程办公必备:用OpenWrt软路由打造你的随身‘家庭办公室’(支持Windows远程唤醒与桌面)
移动办公革命:OpenWrt软路由构建高效远程办公系统 1. 现代远程办公的痛点与解决方案 作为一名常年奔波于各大城市的咨询顾问,我深刻理解移动办公的痛点:酒店网络不稳定、公共WiFi安全隐患、重要文件无法随时调取、高性能工作站闲置在家...直到…...
手把手教你部署造相Z-Image v2:内置模型版,开箱即用免配置
手把手教你部署造相Z-Image v2:内置模型版,开箱即用免配置 1. 为什么选择造相Z-Image v2? 如果你正在寻找一个既强大又易于部署的文生图模型,造相Z-Image v2绝对值得考虑。这个由阿里通义万相团队开源的模型,拥有20亿…...
如何完整备份QQ空间历史说说:GetQzonehistory终极使用指南
如何完整备份QQ空间历史说说:GetQzonehistory终极使用指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 想要永久保存QQ空间里那些珍贵的青春记忆吗?GetQzoneh…...
从轮胎变形到车辆漂移:深入浅出聊聊自动驾驶横向控制里的‘侧偏刚度’
轮胎侧偏刚度:自动驾驶横向控制中的隐形弹簧 想象一下在高速公路上以120km/h的速度变道时,方向盘只需轻轻转动几度——这种看似反直觉的操控背后,是轮胎侧偏刚度在默默发挥着作用。就像跳水运动员入水时水面产生的弹性变形一样,轮…...
【YOLOv10多模态涨点改进】独家创新首发| TGRS 2026 |引入 CIFusion 通道交互融合模块,通过跨特征交互机制强化目标区域响应,适合多模态融合目标检测,小目标检测高效涨点
一、本文介绍 🔥这篇论文作者使用YOLO模型发SCI一区!喜提TGRS 2026顶刊!做遥感多模态小目标检测任务。 本文给大家介绍利用 CIFusion 通道交互融合模块 改进YOLOv10多模态目标检测模型,从而提高目标检测性能。CIF 通过对 RGB 与红外特征进行通道级自适应交互,根据全局上…...
