惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Register - Security
The Register - Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog
V
Visual Studio Blog
云风的 BLOG
云风的 BLOG
aimingoo的专栏
aimingoo的专栏
C
Check Point Blog
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
L
LangChain Blog
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security @ Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
人人都是产品经理
人人都是产品经理
H
Hacker News: Front Page
L
Lohrmann on Cybersecurity
T
Troy Hunt's Blog
T
Threat Research - Cisco Blogs
A
About on SuperTechFans
T
Threatpost
AWS News Blog
AWS News Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
Tor Project blog
Google Online Security Blog
Google Online Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tenable Blog
W
WeLiveSecurity
博客园 - 叶小钗
K
Kaspersky official blog
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
M
MIT News - Artificial intelligence
Hacker News - Newest:
Hacker News - Newest: "LLM"
Engineering at Meta
Engineering at Meta
有赞技术团队
有赞技术团队
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Secure Thoughts
小众软件
小众软件
D
Docker
爱范儿
爱范儿
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News and Events Feed by Topic
S
Schneier on Security
博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net

Mengke's blog - Mengke's coding journey

年轻不是健康的免死金牌 深圳工作机会,前端 2025 年终总结 Skill 不是 MCP 的替代品:我理解的渐进式披露与选型原则 独立开发者如何开具发票 香港银行卡开户完整指南(2025年9月最新) 招商银行储蓄卡微信动账提醒恢复方法 再谈 MCP - Model Context Protocol(MCP)详解和开发教程 Get Human-Readable "Time Ago" in TypeScript 以「asset-price-mcp」为例,从 0 开发 MCP Server Model Context Protocol (MCP) 快速开始 DeepSeek + Dify 搭建本地知识库 An elegant solution for implementing optional property types using TypeScript 2024 年终总结 Quickly Create a Fullscreen WebView with Autoplay Support for Testing 以数字开头的 ID 在 querySelector 中的处理 String casing utilities in JavaScript Check if a string is a valid color Simple Event-Emitter/PubSub pattern Find which process is running on a certain port and kill it Markdown Code block's basic and advanced syntaxes Common npm commands to use locally Pnpm aliases How to safely rename a case sensitive file/directory in a git repo? A custom hooks to use an async effect A custom hooks to use local storage state 🤩 Mengke'blog 上线的这一年 🗼 五月底去了一趟日本,记录一下我的游记和攻略 网站性能优化:如何高效预加载大型静态资源 闰年之约 - 2024年2月29日 A collection of some useful websites 2023 年终总结 WebGL 学习笔记(一)基础概念与实践 Android Webview <video> 标签去除默认播放按钮图 📷 纯前端也可以实现「用户无感知录屏」? Getting Spotify token to display now playing track on your website AVP - Web 端特效视频播放器 IndexedDB 基础入门 直接下载网易云音乐中歌曲MP3格式的方法 什么!一个项目给了8个字体包??? flex 布局中 start/end 和 flex-start/flex-end 的区别 深入 Pinia:从代码出发探索 Vue 状态管理的奥秘 Pinia 快速上手指南 Nest.js Typrorm 多对多关系如何创建 Strapi 快速入门 CentOS7 MySQL 数据库安装与卸载 Next.js 上手指南 Vue 数据响应式原理 deno 快速上手 - Hello World 案例 快速上手 Vue3 尝鲜 Vue 3.0 Combination API JavaScript 数组扁平化处理的方法总结
react-router-dom 路由基础教程
Mengke · 2020-07-27 · via Mengke's blog - Mengke's coding journey

一、安装

根组件index.js

使用 Router 组件包裹根节点来实现全局的路由访问。

结构有 BrowserRouterHashRouter 两种模式,分别对应 VUE-routermode: historymode: hash 两种模式。

注意:一定要使用 BrowserRouter 或 HashRouter 作为祖先组件包裹我们的根组件!

二、使用

使用 Route 组件来完成路由,类似于 Vue-router 的 <router-view></router-view> 标签。

匹配方式: 不精准匹配:这种情况下如果地址栏输入 /tv//tv 都会匹配:

精准匹配

方法1:在标签中加上 exact 属性:

方法2:使用 Switch:

注意:使用 Switch 时将一般路由写在最下,特殊路由写在上面。否则可能会匹配到普通路由上。

三、路由导航

react-router-dom 的路由导航分为组件式导航和编程式导航。顾名思义,组件式导航即通过组件进行导航完成路由的跳转,编程式导航就是在我们的逻辑代码内控制路由进行跳转,加下来分别介绍一下两种导航。

1、组件式导航:

使用 Link 标签进行跳转:

其实就是在页面内加入了一个a标签。但是经过实验,我们直接写 a 标签的话也可以跳转,但会有延迟,不如由 Link 为我们生成的 a 标签跳转速度快。通过 devtools 可以发现,结构上写法上没有任何区别,但由 Link 生成的 a 标签不会发生页面跳转,只会DOM操作。

路由高亮

使用 NavLink 标签

路由重定向

使用 Redirect 标签,一般配合 Switch 一块使用。

Redirect 标签一样属于普通路由,要放在特殊路由下边。

fromto 表示当路由匹配到 / 时重定向到 /movie

2、编程式导航:

在组件实例中, React-router-dom 自动帮我们在 props 中绑定了 history、location、match 三个对象,这样我们进行路由跳转就特别方便了。如果你熟悉 Vue-router 的话你会发现语法几乎一样。

  • history:主要包括路由跳转函数。

  • location:主要包含路径信息,类似于 Vue-router 的 $route。 其中的 state 属性包含上一个路由传递过来的参数。

  • match:主要使用其中的 params 获取动态路由的信息。

跳转到某个路由:

四、路由传参

1、query传参:

Vue-router 不同,react-router-dom 不会主动将 query 帮我们解析成对象,如果使用 query 进行传参的话我们需要自己去解析。

可以在 props/history/location/search 中拿到完整的 query 字符串。

2、动态路由传参:

在路由中设置动态路由,比如动态的 id,在 Movie 组件实例内 props/match/params 中可以拿到 id。

3、路由跳转时传参:

路由跳转时,可在 push 的第二个参数处传一个对象,我们在 /tv 组件实例上 props/location/state 上就可以拿到这个对象了:

五、子路由

react-router-dom 中没有很强的子路由的概念,所谓的子路由其实是由路由的嵌套来实现的,比如,我在 /movie 路由渲染的组件为 Movie 组件,我们继续在 Movie 组件中插入路由,并且路径设置为 /movie/jingsong ,就可以实现类似于子路由的效果。

Movie组件: