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

React Router v7数据模式使用指南

React Router官方文档:https://reactrouter.com.cn/

react-router中路由模式分为:框架模式、 数据模式、声明式模式

以下仅为 * 数据模式 * 的使用笔记

  1. 安装 当前版本v7
npm install react-router
  1. 使用createBrowserRouter创建路由配置,支持普通路由和嵌套路由。router/index.js
import{createBrowserRouter}from"react-router";importIndexfrom"@/pages/Index";importUserfrom"@/page/User";importLoginfrom"@/page/Login";constrouter=createBrowserRouter([// 普通路由{path:"/",Component:Index,},// 嵌套路由{path:"/user",Component:User,children:[{// path: "login",index:true,// 默认路由Component:Login,},{path:"register",Component:Register,},]}]);exportdefaultrouter;
  1. 使用RouterProvider绑定路由 main.js
import{RouterProvider}from"react-router/dom";importrouterfrom"./router/index.js";createRoot(document.getElementById("root")).render(<StrictMode><Provider store={store}>{/* <App /> */}{/* 绑定路由 */}<RouterProvider router={router}/></Provider></StrictMode>);

组件内通过Outlet展示子路由,Link/NavLink实现导航

import{Outlet,Link}from"react-router";exportdefaultfunctionUser(){return(<div><h1>用户</h1><Link to="/user">登录</Link><Link to="/user/register">注册</Link>{/* 二级路由出口 */}<Outlet/></div>);}
  1. 路由导航
  • 4.1 Link
import{Link}from"react-router";<Link to="/">首页</Link><Link to="/about">关于</Link>
  • 4.2 NavLink 需要渲染活跃和待处理状态的导航链接
import{NavLink}from"react-router";<NavLink to="/messages"className={({isActive,isPending,isTransitioning})=>[isPending?"pending":"",isActive?"active":"",isTransitioning?"transitioning":"",].join(" ")}>Messages</NavLink>
  • 4.3 Form
<Form action="/search"><input type="text"name="q"/></Form>
  • 4.4 重定向redirect
import{redirect}from"react-router";exportasyncfunctionloader({request}){letuser=awaitgetUser(request);if(!user){returnredirect("/login");}return{userName:user.name};}
  • 4.5 编程式 useNavigate
import{useNavigate}from"react-router";exportfunctionuseLogoutAfterInactivity(){letnavigate=useNavigate();useFakeInactivityHook(()=>{// navigate("/logout");// 使用navigate函数并设置replace为true来替换当前历史记录navigate("/logout",{replace:true});});}
  • 4.6 路由导航传参 useSearchParams 、useParams
// 4.6.1 searchParams传参navigate("/user?id=123");// 取const[params]=useSearchParams();letid=params.get("id");// 4.6.2 params传参navigate("/user/123");// 取const[params]=useParams();letid=params.id;

Hooks解析

useLocation: 返回当前的 Location,包含有关 URL 路径的信息,以及可能的一些任意状态和键。

// 属性{"pathname":"/index",// URL 路径名,以 / 开头。"search":"",// URL 查询字符串,以 ? 开头。"hash":"",// URL 片段标识符,以 # 开头。"state":null,// 与此 location 关联的任意数据值。"key":"f5ecz0os"// 与此 location 关联的唯一字符串。 可用于在其他存储 API(如 localStorage)中安全地存储和检索数据。注意:此值在初始 location 上始终为 "default"。}
http://www.cnnetsun.cn/news/110039.html

相关文章:

  • 终极指南:3步掌握bilidown下载B站8K超清视频
  • ACadSharp终极指南:5个简单步骤掌握DXF/DWG文件处理
  • Cirq版本混乱导致项目崩溃?资深工程师教你构建可复现的补全开发环境
  • YOLOv8深度性能评测:全面解析FPS、延迟与多维度效率指标评估策略
  • (独家披露)大规模部署云原生Agent时,我们是如何实现Docker资源零浪费的
  • 为什么你的MCP网关总是失控?,深度解析Docker监控盲区与应对策略
  • **YOLOv12低照度检测革新:将SCINet作为可训练预处理主干的全链路指南
  • 为什么你的多模态Agent测试总失败?Docker环境变量配置的4个致命误区
  • 【量子开发工程师私藏技巧】:高效完成VSCode硬件状态检测的6种方式
  • 【量子电路可视化交互操作全解析】:掌握5大核心技巧提升研发效率
  • 揭秘Q#与Python混合编程:如何实现高效代码导航与智能跳转
  • 【VSCode量子开发必备技能】:深度挖掘历史记录中的隐藏数据
  • 高效获取Bandcamp音乐资源的完整实用指南
  • 从AutoGen到Microsoft Agent Framework:3步完成平滑迁移的技术指南
  • 基于web的酒店点餐系统的设计与实现申报表
  • SFC中文游戏和特辑攻略全5册 | PDF+图包
  • 25、数据库管理与Web内容服务指南
  • NestJS 对比 Express
  • [CTF]攻防世界:Cat 抓住那只猫
  • 6GB显存革命:Seed-VR2如何重新定义AI视频增强标准?
  • Rod性能优化:5大技巧让你的Web爬虫速度飙升300%
  • 量子电路缩放难题如何破解:3步实现高效可视化调控
  • promise应用
  • 量子算法开发全攻略(VSCode配置与示例代码大公开)
  • 如何快速掌握分子可视化:VMD-Python的完整入门指南
  • KolodaView开源项目完整贡献指南:从入门到核心开发者
  • VSCode遇上量子芯片:你不可错过的8个硬件兼容性检测要点
  • 27、垃圾邮件过滤与病毒防护:SpamAssassin 与 ClamAV 全解析
  • 告别复杂命令:5步打造你的专属版本控制系统
  • 20、Linux 文件编辑全攻略