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

5.7 react 路由

react 状态管理库 14:20

  • react 路由(补充) 数据路由

  • 路由hooks

    • 路由跳转 (方法 标签/内置方法)

    • 获取路由地址栏信息

    • 动态路由实现(多角色权限路由)

  • redux redux-toolkit 状态管理

  • antd 组件使用

1.react 路由 声明式路由

v7: 数据式路由【推荐】 声明式路由

v6: 约定式路由【推荐】 配置式路由

main.js

  import { createRoot } from 'react-dom/client'import './index.css'import App from './App'import { BrowserRouter, Routes, Route } from "react-router";import Home from '@/pages/home/Home'import Coding from '@/pages/coding/Coding'import Pins from '@/pages/pins/Pins'import Course from '@/pages/course/Course'​import Following from '@/pages/following/Following'import Frontend from "@/pages/frontend/Frontend";​createRoot(document.getElementById('root')).render(<BrowserRouter><Routes><Route path="/" element={<App />}><Route   element={<Home/>}><Route index element={<Following/>}></Route><Route path="frontend" element={<Frontend/>}></Route></Route>                </Route></Routes></BrowserRouter>)

2.路由hooks

2.1 跳转页面
  • 通过组件跳转 原理 重新封装了a 标签

      <NavLink to="跳转路径" >Home</NavLink>
  • 函数式编程 跳转 hooks 跳转

  import { useNavigate } from "react-router";​​let navigate = useNavigate();​navigate(数字)  //前进几页  后退几页navigate('/goods')   //直接跟路径

2.2 获取路由地址栏信息

  import { useLocation } from 'react-router'​let location = useLocation()   //{path:'/xxx',hash:'/#/xxx'}​​

3.外卖管理系统 -项目搭建

  • 技术栈

vite

react19

react-router v7

less [新知识点:模块化css]

axios || Fetch [新知识点:fetch代替axios]

antd [新知识点]

antd charts [新:图表插件]

  • 路由配置

1.创建所有的页面

2.创建路由配置文件 src/router/index.jsx

注意 layout 页面需要反复多次使用

  import { createBrowserRouter } from "react-router";​import App from '@/App'import Login from '@/pages/login/Login'import Layout from '@/pages/layout/Layout'import Home from '@/pages/home/Home'import AccountList from '@/pages/account/List'import AccountEdit from '@/pages/account/Edit'import AccountAdd from '@/pages/account/Add'import AccountCenter from '@/pages/account/Center'import Order from "@/pages/order/Order";const router = createBrowserRouter([{path: "/",Component:App,children:[{index:true,Component:Login},{path:"home",Component:Layout,children:[{index:true,Component:Home},]},{path:'account',Component:Layout,children:[{path:'list',Component:AccountList},{path:'add',Component:AccountAdd},{path:'center',Component:AccountCenter},{path:'edit',Component:AccountEdit}]},{path:'order',Component:Layout,children:[{index:true,Component:Order}]}]},​​​])​​export default router

3.修改main.jsx 的配置

全局注入 路由配置

  ​import { createRoot } from 'react-dom/client'import './index.css'import {RouterProvider} from 'react-router'import router from '@/router'​createRoot(document.getElementById('root')).render(<RouterProvider router={router}></RouterProvider>)​

4.根页面和 一级页面需要进行占位

  • app.jsx

  import React from 'react'import { Outlet } from 'react-router'export default function App() {return (<><Outlet /></>)}​
  • layout.jsx

  import React from 'react'import { Outlet } from 'react-router'export default function Layout() {return (<><div>顶部</div><div>左侧菜单</div><div><Outlet></Outlet></div></>)}​

4.antd 使用

  • 下载安装

  pnpm install antd
  • 使用

  import React from 'react'import { Button , Form, Input } from 'antd';import './index.less'export default function Login() {​const onFinish = values => {console.log('Success:', values);};​​return (<><div className="login"><div className="form-box">​<FormonFinish={onFinish}>​<Form.Itemlabel="账号"name="account"rules={[{ required: true, message: '请输入您的账号' }]}><Input /></Form.Item>​<Form.Itemlabel="密码"name="password"rules={[{ required: true, message: '请输入密码' }]}><Input.Password /></Form.Item>​<Form.Item label={null}><Button type="primary" htmlType="submit">登录</Button></Form.Item>​​​</Form>​​</div></div></>)}​

http://www.xdnf.cn/news/321481.html

相关文章:

  • Go语言八股之并发详解
  • 管家婆实用贴-如何在Excel中清除空格
  • Go语言——error、panic
  • 解决0x0000011b共享打印机无法连接!
  • 泛型设计模式实践
  • 初始图形学(7)
  • 2025-05-07-FFmpeg视频裁剪(尺寸调整,画面比例不变)
  • 系统思考:教育焦虑恶性循环分析
  • C语言初阶:数组
  • DeepSeek全域智能革命:从量子纠缠到星际文明的认知跃迁引言:认知边界的坍缩与重构
  • 解决leetcode第3537题填充特殊网格
  • CSS详细学习笔记
  • eclipse常用快捷键
  • Jmeter进行http接口测试
  • 使用VSCode在Windows 11上编译运行项目
  • 005 权限的理解
  • Linux上将conda环境VLLM服务注册为开机自启
  • Java 常用的 ORM框架(对象关系映射)
  • 企业级AI革命!私有化部署开源大模型:数据安全+自主可控,打造专属智能引擎
  • Ubuntu20.04安装使用ROS-PlotJuggler
  • 【MCP】客户端配置(ollama安装、qwen2.5:0.5b模型安装、cherry-studio安装配置)
  • C#与Halcon联合编程
  • 迁移学习:如何加速模型训练和提高性能
  • 锁相环HMC830的调试
  • 缓存替换算法与存储器管理的分页、分段、段页式管理联系
  • http Status 400 - Bbad request 网站网页经常报 HTTP 400 错误,清缓存后就好了的原因
  • 办公学习 效率提升 超级PDF处理软件 转换批量 本地处理
  • android 折叠屏开发适配全解析:多窗口、铰链处理与响应式布局
  • 回溯进阶(一):以全排列问题为例,来展示如何对回溯的纵向和横向进行操作
  • C++ 有哪些标准版本