React学习(一):使用react-router构建导航应用

news/2025/11/1 14:31:27/文章来源:https://www.cnblogs.com/mingupupu/p/19183327

前言

由于C#用的真的太舒服了,导致我其它语言其它框架都只是浅浅的了解一下,没写过多少代码,就偶尔用下Python。现在AI时代其实熟练了一门语言,去学习其它语言其它框架其实是很方便的,AI就是最好的老师,基础知识你都不需要用很好的AI,国产的glm-4.6、kimi k2就够了。

C#是我的舒适区,WPF也是我的舒适区,现在尝试跳出舒适区多接触一些新语言新框架。以前的学习方式可能是看官方文档,再找找博客或者看视频学习,现在的学习方式我觉得自己先稍微过一下官方文档,了解一些基础概念,然后就配合AI上手写你想实现的东西,在实现的过程中学习。

AI时代写博客方式可能也有所改变,更多人想知道的其实是你实现的过程,而不是具体的知识点,具体的知识点,普通人很难比得过AI。

过程

React介绍

React 是一个用于构建用户界面的 JavaScript 库。

声明式:React 使创建交互式 UI 变得毫不费力。为应用中的每个状态设计简单的视图,当数据变化时,React 将高效地更新和渲染正确的组件。声明式视图使您的代码更具可预测性,更易于理解,更易于调试。

组件化:构建封装的组件来管理它们自己的状态,然后将它们组合起来构建复杂的 UI。由于组件逻辑是用 JavaScript 编写而不是模板,因此您可以轻松地在应用程序中传递丰富数据,并将状态与 DOM 分离。

学习一次,随处编写:我们不会对您技术栈的其他部分做出假设,因此您可以在不重写现有代码的情况下使用 React 开发新功能。React 也可以使用 Node 在服务器端渲染,并使用 React Native 开发移动应用。

GitHub地址:https://github.com/facebook/react?tab=readme-ov-file

官方文档:https://react.dev/learn

先大致过一下官网文档内容,了解一下React的基础概念。

然后先使用Vite构建一个React应用。

Vite介绍

Vite(法语中的“快速”,发音为 /vit/ ,类似“veet”)是一种新型的前端构建工具,极大地提升了前端开发体验。它主要由两部分组成:

一个开发服务器,通过原生 ES 模块提供您的源文件,并具备丰富的内置功能和惊人的快速热模块替换 (HMR)。

用于打包代码的构建命令,使用 Rollup 预先配置,以输出针对生产环境高度优化的静态资源。

此外,Vite 通过其插件 API 和 JavaScript API 高度可扩展,并完全支持类型定义。

GitHub地址:https://github.com/vitejs/vite

构建成功后,跟你的AI助手(我用的是Kilo Code)说:“我想创建一个左边是菜单,右边是内容的导航布局应用”。

AI就帮你写了一个,先看下AI写的效果,如果是自己想要的,那就停下来学习一下AI是怎么写的。

在终端中输入npm run dev运行这个React应用查看效果:

先不用管为什么首页这么不搭,首页被我改过了,反正现在是AI已经帮我完成了我们想要实现的一个效果,现在可以停下来学习一下AI是如何实现的了。

AI时代好像总有一种实现焦虑,想要叫AI给我们干很多事情,让AI实现自己的想法,这确实很美好,但是我突然意识到如果自己不懂的话,很难驾驭好AI,而且总给我一种很虚的感觉,写的再多再好也不是自己的,都是AI的,自己啥也不懂,没有之前自己写代码那种踏实的感觉。

AI时代,自己越来越觉得慢就是快,慢慢来,不要着急,技术是永远也学不完的,与其让AI实现一个自己啥也不懂的,只是可以运行的程序,不如先慢下来,在实现中学习,这样对自己成长也有帮助,只有自己真正懂的了才是自己的,不然都只是AI的。

现在来看看AI是如何帮我们实现这个导航应用的。

首先AI使用了react-router,我们先来了解一下。

react-router介绍

React Router 是一个用于 React 的多策略路由器,弥合了从 React 18 到 React 19 的差距。你可以将其作为 React 框架最大程度地使用,也可以将其作为库最小程度地使用,并结合自己的架构。

GitHub地址:https://github.com/remix-run/react-router

先看项目结构:

首先写了不同的页面与样式,做了一个Sidebar组件:

import { Link, useLocation } from 'react-router-dom';
import './Sidebar.css';const Sidebar = () => {const location = useLocation();const menuItems = [{ path: '/', label: '聊天', icon: '🏠' },{ path: '/about', label: '关于我们', icon: '📄' },{ path: '/products', label: '产品', icon: '📦' },{ path: '/contact', label: '联系方式', icon: '📞' },{ path: '/settings', label: '设置', icon: '⚙️' }];return (<div className="sidebar"><div className="sidebar-header"><h2>Agent学习</h2></div><nav className="sidebar-nav"><ul className="menu-list">{menuItems.map((item) => (<li key={item.path} className="menu-item"><Linkto={item.path}className={`menu-link ${location.pathname === item.path ? 'active' : ''}`}><span className="menu-icon">{item.icon}</span><span className="menu-label">{item.label}</span></Link></li>))}</ul></nav></div>);
};export default Sidebar;

在这个组件中,主要使用了Link与useLocation。

Link 是 React Router 提供的导航组件,用于在应用内部进行页面跳转。

to 属性:指定目标路径,如 '/'、'/about' 等。

useLocation() 是 React Router 提供的自定义 Hook。

返回值:包含当前路由信息的 location 对象

主要属性:

location.pathname:当前URL的路径部分(如 /about)

location.search:查询字符串

location.hash:URL的hash部分

工作流程:

用户点击菜单项 → Link 组件触发路由跳转

页面更新 → useLocation() 获取新的路径信息

组件重新渲染 → 根据新路径设置正确的 active 类名

CSS样式应用 → 当前页面对应的菜单项高亮显示

现在再来看看App.tsx:

import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Sidebar from './components/Sidebar';
import Home from './pages/Home';
import About from './pages/About';
import Products from './pages/Products';
import Contact from './pages/Contact';
import Settings from './pages/Settings';
import './App.css';function App() {return (<Router><div className="app"><Sidebar /><main className="main-content"><Routes><Route path="/" element={<Home />} /><Route path="/about" element={<About />} /><Route path="/products" element={<Products />} /><Route path="/contact" element={<Contact />} /><Route path="/settings" element={<Settings />} /></Routes></main></div></Router>);
}export default App;

使用到了BrowserRouter、Routes与Route。

BrowserRouter (重命名为 Router)

这是 React Router 中最常用的路由器类型,它使用 HTML5 的 history API 来保持 UI 和 URL 同步,重命名为 Router 是为了代码简洁,是常见的做法。

Routes

用于包裹一组路由规则,是 React Router v6+ 中的新组件,它会根据当前 URL 匹配最合适的路由并渲染对应的组件。

Route

定义单个路由规则,包含路径和要渲染的组件,使用 path 属性指定 URL 路径,element 属性指定要渲染的组件。

工作原理

Router 包裹整个应用,启用路由功能

Sidebar 组件中使用 Link 组件创建导航链接

Routes 作为路由容器,内部包含多个 Route 定义

当用户点击 Sidebar 中的链接时,URL 会改变,Routes 会根据新的 URL 匹配对应的 Route 并渲染相应组件

这样就实现了一个简单的React导航应用了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/952826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将变长蛋白质序列投影到固定维度的统一空间

https://github.com/westlake-repl/ProTrek/blob/main/model/ProTrek/protein_encoder.py 这个蛋白质编码器的代码展示了如何将变长蛋白质序列投影到固定维度的统一空间。 1. 模型架构概览 class ProteinEncoder(torch…

起飞啦!!!兄弟们,揭秘Claudable给你写代码的魔力 Github 3k star

嗨,我是小华同学,专注解锁高效工作与前沿AI工具!每日精选开源技术、实战技巧,助你省时50%、领先他人一步。👉免费订阅,与10万+技术人共享升级秘籍!“Claudable 是一种基于 Next.js 的 Web 应用构建器,结合 Cl…

2.4G低功耗

前言 基于CH572RF_PHY例程做低功耗管理。 发射端做低功耗只需要控制好发送的间隔,发送完成后自行进入睡眠即可。 接收端做睡眠时,需要考虑跟发送端发送数据的时间点吻合,否则可能出现发送端在01时刻发送数据,接收端…

2025年11月太空舱品牌推荐评价:有实力厂家综合性能评测

随着太空舱在文旅住宿、共享办公等领域的快速普及,越来越多的投资者和运营商开始关注这一创新业态。根据行业数据显示,2024年中国太空舱市场规模已达27.3亿元,同比增长42.5%。这种快速增长背后反映的是消费者对个性…

2025年11月太空舱推荐榜:实力厂家与正规品牌综合评测与排行

随着太空舱产品在文旅住宿、共享空间等领域的应用日益广泛,用户在选择时往往面临诸多挑战。无论是酒店经营者寻求批量采购,还是民宿业主规划特色客房,亦或是个人用户打造个性化休息空间,都需要综合考虑供应商资质、…

2025年11月太空舱推荐榜:口碑好的正规生产厂家综合评测与排名分析

在文旅产业快速发展和个性化住宿需求持续增长的背景下,太空舱作为一种新兴的装配式建筑形态,正受到越来越多投资者和运营者的关注。无论是景区配套、民宿升级还是临时性商业空间拓展,太空舱都以其模块化、快速部署的…

2025年11月太空舱供应厂家评价:专业品牌综合实力排行榜

随着太空舱在文旅住宿、共享办公等场景的快速普及,越来越多的投资者和运营者开始关注这一新兴领域。您可能是正在规划特色住宿项目的酒店管理者,也可能是寻求差异化竞争的民宿业主,或是准备布局共享休息空间的企业负…

【Python 基础】第 3 期:使用 PyCharm 编写 Hello World

我们写文档大多用 Word、写表格大多用 Excel、写幻灯片大多用 PPT。 写代码也需要一个软件作为编辑器(传说的大神用记事本写代码纯属玩笑了,越是大神越追求效率,用的软件功能越强)。 Python 现在已经有了非常多的代…

2025年权威解析与推荐:淮安广联纸业供应链能力与区域市场适配性深度评估

本文将从供应链布局与区域市场适配性的核心维度出发,为读者提供一个有针对性的客观参考。淮安广联纸业有限公司自2012年创立以来,始终专注纸业领域精耕发展。历经十余载稳健经营,现已构建覆盖造纸、加工、销售的全产…

2025年权威解析与推荐:淮安广联纸业全产业链布局深度分析

引言:本文将从产业链布局维度出发,为读者提供一个有针对性的客观参考。淮安广联纸业作为区域纸制品行业的重要服务商,其全产业链模式的形成与演化过程值得深入探讨。通过对其纵向整合能力的剖析,可以更清晰地理解企…

2025年11月专业太空舱供应厂家推荐排名:聚焦技术实力与性价比的客观排行

随着太空舱在文旅住宿、共享空间等领域的应用日益普及,越来越多的投资者和运营商开始关注这一创新产品。无论是计划建设特色民宿的创业者,还是希望升级住宿体验的酒店管理者,选择一家可靠的太空舱供应商都成为项目成…

2025年权威解析与推荐:淮安广联纸业产业布局与战略发展深度分析

引言:本文将从产业链布局与战略发展这一核心维度出发,对淮安广联纸业有限公司进行深度剖析,旨在为行业观察者与潜在合作伙伴提供一个客观、有针对性的参考框架。 背景与概况:淮安广联纸业有限公司自2012年创立以来…

2025年权威解析与推荐:淮安广联纸业的市场定位与品牌发展剖析

引言:本文将从品牌发展维度出发,为读者提供一个有针对性的客观参考。淮安广联纸业有限公司自2012年创立以来,始终专注纸业领域精耕发展。历经十余载稳健经营,现已构建覆盖造纸、加工、销售的全产业链布局,建成占地…

2025年权威解析与推荐:淮安广联纸业发展路径深度分析

引言:本文将从企业发展历程与战略布局这一核心维度出发,为读者提供一个有针对性的客观参考。 背景与概况:淮安广联纸业有限公司自2012年创立以来,始终专注纸业领域精耕发展。历经十余载稳健经营,现已构建覆盖造纸…

2025年权威推荐与深度解析:淮星复印纸的综合价值分析

引言:本文将从产品性能与使用体验这一核心维度出发,结合品牌背景、原料工艺、性价比及服务保障等多个角度,为读者提供一个关于淮星复印纸的客观参考。 背景与概况:淮安广联纸业有限公司自2012年创立以来,始终专注…

1069:乘方计算快速幂

1.快速幂 #include<bits/stdc++.h> using namespace std; int main() {int a, n, r = 1;//r:结果cin>>a>>n;while(n){if(n & 1) r*=a;//如果b当前二进制为1就要乘上这个数n>>=1; //将b末尾…

2025年权威推荐与深度解析淮星复印纸:优质平价的办公打印新选择

本文将从产品性能与使用体验的维度出发,为读者提供一个有针对性的客观参考。淮星作为新兴的复印纸品牌,始终秉持"优质平价,让每一分钱都物超所值"的市场理念。我们深知在现代办公环境中,复印纸作为日常消…

2025年11月打印纸品牌排行:权威评测与正规厂家综合对比

在日常办公与学习场景中,打印纸作为基础耗材其品质直接影响文档输出效果与长期保存价值。根据国家文教用品质量监督检验中心数据显示,2024年我国打印纸市场规模已达120亿元,年均消耗量增长率稳定在5%左右。许多用户…

本地化知识库:RAGFlow

1. 下载&安装Docker,为RAGFlow提供配置好的运行环境。 2. 下载Ollama + 大模型,配置环境变量:OLLAMA_HOST: :11434 让虚拟机可以访问到本机上的Ollama,OLLAMA_MODELS:自定义模型的下载位置 3. 去RAGFlow的GitH…