news 2026/6/10 12:30:21

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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> ); }

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:29:19

蜗牛学苑的第九天

今天因为个人受伤没有上课&#xff0c;还好有朋友们的思维导图我才能明白今天讲的是什么&#xff0c;今天大概讲的就是包继承&#xff0c;重写和多态。其中包括。包和修饰符修饰符主要是讲了访问修饰符和非访问修饰符。还有包装。继承&#xff0c;重写构造方法的继承。还有一个…

作者头像 李华
网站建设 2026/6/10 12:29:00

eBay CodeSignal OA 真题分享 | 2026 最新版(已通过)

最近刚刷完 eBay 的 Online Assessment&#xff0c;这次 OA 在 CodeSignal 平台进行&#xff0c;总共 4 道题。我用了大概 65 分钟全部 AC&#xff0c;下面把真实题目和详细解题思路分享给大家&#xff0c;供准备 eBay SDE 的同学参考。 OA 整体情况 平台&#xff1a;CodeSig…

作者头像 李华
网站建设 2026/6/10 12:26:35

Python 高手编程系列十二:集合类型

Python 提供了许多内置的数据集合类型&#xff0c;如果选择明智的话&#xff0c;可以高效解决许多问题。 你可能已经学过下面这些集合类型&#xff0c;它们都有专门的字面值&#xff0c;如下所示。 • 列表&#xff08;list&#xff09;。 • 元组&#xff08;tuple&#xff09…

作者头像 李华
网站建设 2026/6/10 12:26:33

红楼梦相关的分词,出现次数最高的20个(python版)

运行代码import jiebatxt open("C:/Users/3574045633/Desktop/红楼梦.txt", "r", encodinggb18030).read() words jieba.lcut(txt) counts {}alias_map {宝玉: 贾宝玉, 宝二爷: 贾宝玉, 怡红公子: 贾宝玉,黛玉: 林黛玉, 颦儿: 林黛玉, 林妹妹: 林黛玉,…

作者头像 李华
网站建设 2026/6/10 12:18:32

别再手动建节点了!用Python+Neo4j批量导入CSV,5分钟搞定唐诗知识图谱

PythonNeo4j自动化构建唐诗知识图谱实战指南 当我们需要处理大量结构化的唐诗数据时&#xff0c;手动在Neo4j中创建节点和关系不仅效率低下&#xff0c;还容易出错。本文将带你用Python脚本实现CSV数据的自动化导入&#xff0c;5分钟完成传统方式需要数小时的手工操作。 1. 环…

作者头像 李华