当前位置: 首页 > news >正文

03-状态管理与路由——05-React Router 基础配置

React Router 基础配置

一、React Router 简介

React Router 是 React 应用的标准路由库。

安装

npminstallreact-router-dom

二、基础配置

2.1 创建路由

// App.js import { BrowserRouter, Routes, Route, Link } from 'react-router-dom'; import Home from './pages/Home'; import About from './pages/About'; import Contact from './pages/Contact'; function App() { return ( <BrowserRouter> <nav> <Link to="/">首页</Link> <Link to="/about">关于</Link> <Link to="/contact">联系</Link> </nav> <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> <Route path="/contact" element={<Contact />} /> </Routes> </BrowserRouter> ); }

2.2 使用 NavLink(带激活样式)

import { NavLink } from 'react-router-dom'; function Navigation() { return ( <nav> <NavLink to="/" className={({ isActive }) => isActive ? 'active' : ''} > 首页 </NavLink> <NavLink to="/about" style={({ isActive }) => ({ color: isActive ? 'red' : 'black', fontWeight: isActive ? 'bold' : 'normal' })} > 关于 </NavLink> <NavLink to="/contact">联系</NavLink> </nav> ); }

三、编程式导航

import { useNavigate } from 'react-router-dom'; function LoginButton() { const navigate = useNavigate(); const handleLogin = () => { // 登录逻辑 navigate('/dashboard'); }; const goBack = () => { navigate(-1); // 返回上一页 }; const goForward = () => { navigate(1); // 前进一页 }; const replacePage = () => { navigate('/login', { replace: true }); // 替换历史记录 }; return ( <div> <button onClick={handleLogin}>登录</button> <button onClick={goBack}>返回</button> <button onClick={goForward}>前进</button> </div> ); }

四、404 页面

function App() { return ( <BrowserRouter> <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> <Route path="/contact" element={<Contact />} /> <Route path="*" element={<NotFound />} /> </Routes> </BrowserRouter> ); } function NotFound() { const navigate = useNavigate(); return ( <div> <h1>404 - 页面未找到</h1> <button onClick={() => navigate('/')}>返回首页</button> </div> ); }

五、重定向

import { Navigate } from 'react-router-dom'; function App() { const isLoggedIn = false; return ( <BrowserRouter> <Routes> <Route path="/" element={<Home />} /> <Route path="/dashboard" element={isLoggedIn ? <Dashboard /> : <Navigate to="/login" />} /> <Route path="/login" element={<Login />} /> </Routes> </BrowserRouter> ); }

六、HashRouter vs BrowserRouter

类型URL 示例适用场景
BrowserRouterexample.com/about需要服务器配置
HashRouterexample.com/#/about静态托管、GitHub Pages
// HashRouter 使用 import { HashRouter } from 'react-router-dom'; function App() { return ( <HashRouter> {/* 路由配置 */} </HashRouter> ); } // URL 会变成 example.com/#/about

七、获取当前位置信息

import { useLocation } from 'react-router-dom'; function Breadcrumb() { const location = useLocation(); return ( <div> 当前位置: {location.pathname} 搜索参数: {location.search} 哈希: {location.hash} 状态: {JSON.stringify(location.state)} </div> ); }

http://www.rkmt.cn/news/1497404.html

相关文章:

  • 别再被虚线框困扰了!手把手教你用Visio+pdfcrop+Acrobat DC搞定LaTeX插图阴影问题
  • 纯文科能报大数据本科吗?四条迂回路径+CDA破局
  • Moneta Markets亿汇:“比特币反弹走势仍脆弱”
  • 告别臃肿!VS2022只装C++桌面开发,如何精准搭配Qt 5.12打造轻量级GUI编程环境
  • 告别Apex!用PyTorch Lightning轻松搞定半精度训练与多卡同步(保姆级避坑指南)
  • 2026年6月丰宁坝上草原住宿民宿甄选指南:短途自驾、朋友聚会、观景食宿一站式参考 - 海棠依旧大
  • 保姆级教程:用MounRiver Studio和WCH-Link点亮你的第一个CH32V103C开发板
  • 三明百达翡丽+宝珀手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 告别IP依赖:在Vivado中直接手写MMCME2_ADV原语生成多路时钟(附参数计算避坑指南)
  • 遗传算法实战调参指南:从早熟收敛到工程落地
  • INA219采样不准?从硬件选型到软件校准的避坑指南
  • 三亚百达翡丽+宝珀手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 嵌入式设备如何用C语言对接天翼物联网平台CTWing?手把手教你移植SDK到MCU
  • 从“数独思维”到“启发式搜索”:我是如何用六条策略搞定日历拼图这个烧脑游戏的
  • 工业级遗传算法实战:调参、防早熟与收敛诊断
  • Mac玩转51单片机:除了Keil,用开源工具链(sdcc/stcgal)开发是种什么体验?
  • STM32F103的RTC掉电不保存?手把手教你修改RT-Thread的drv_rtc.c源码
  • 手把手教你用SuperMap iClient3D for WebGL加载山东省天地图(附完整代码与参数详解)
  • 阜阳帝舵+浪琴手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 娄底卡地亚+GP芝柏表手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 2026免费PDF转图片工具教程:在线、电脑软件、小程序全攻略 - 办公小帮手
  • Vue 3 + Tailwind CSS 实战:如何快速封装一套可复用的Hover动画组件库
  • LLM生成参考文献的检测:语义指纹与GNN技术
  • 甘南法穆兰+宝玑手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 告别乱糟糟的SQL!手把手教你配置DataGrip的专属格式化模板(附保姆级参数详解)
  • 2026年意大利商务舱机票预订深度解析与实用指南 - 奔跑123
  • 甘孜法穆兰+宝玑手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 泸州江诗丹顿+万国手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • Cadence CIS数据库配置避坑指南:从ODBC驱动到DBC文件,一次搞定SPB17.4元器件库
  • 上海小程序开发实战指南:从需求拆解到工程落地的关键判断 - 热点速览