Umi + React + Ant Design Pro 项目实践(六)—— ProLayout 应用

2023-11-09

打开 .umirc.ts 文件:

import { defineConfig } from "umi";

export default defineConfig({
  plugins: ['@umijs/plugins/dist/react-query'],
  reactQuery: {},
  routes: [
    { path: "/", component: "index" },
    { path: "/docs", component: "docs" },
    { path: "/products", component: "products" },
  ],
  npmClient: 'pnpm',
});

修改 .umirc.ts 文件:

import { defineConfig } from "umi";

export default defineConfig({
  routes: [
    { path: "/", component: "index", name:'home'},
    { path: "/docs", component: "docs", name:'docs' },
    { path: "/products", component: "products", name:'products' },
  ],
  plugins: ['@umijs/plugins/dist/react-query'],
  reactQuery: {},
  npmClient: 'pnpm',
});

打开 src/layouts/index.tsx 文件:

import { Link, Outlet } from 'umi';
import styles from './index.less';

export default function Layout() {
  return (
    <div className={styles.navs}>
      <ul>
        <li>
          <Link to="/">Home</Link>
        </li>
        <li>
          <Link to="/docs">Docs</Link>
        </li>
        <li>
          <Link to="/products">products</Link>
        </li>
        <li>
          <a href="https://github.com/umijs/umi">Github</a>
        </li>
      </ul>
      <Outlet />
    </div>
  );
}

编辑 src/layouts/index.tsx 文件:

import { ProLayout } from '@ant-design/pro-layout';
import { Link, Outlet, useAppData, useLocation } from 'umi';

export default function Layout() {
  const { clientRoutes } = useAppData();
  const location = useLocation();
  return (
    <ProLayout
      route={clientRoutes[0]}
      location={location}
      title={'Umi x Ant Design'}
      menuItemRender={(menuItemProps, defaultDom) => {
        if (menuItemProps.isUrl || menuItemProps.children) {
          return defaultDom;
        }
        if (menuItemProps.path && location.pathname !== menuItemProps.path) {
          return (
            <Link to={menuItemProps.path} target={menuItemProps.target}>
              {defaultDom}
            </Link>
          );
        }
        return defaultDom;
      }}
    >
      <Outlet />
    </ProLayout>
  );
}

这里先用 umiuseAppData 拿到全局客户端路由 clientRoutes,这是一份嵌套结构的路由表,我们把 clientRoutes[0] 传给 ProLayout;再通过 useLocation() 拿到 location 信息,也传给 ProLayout 来决定哪个菜单应该高亮;同时我们希望点击菜单时做路由跳转,需要需要定制 ProLayoutmenuItemRender 方法。

页面效果:
请添加图片描述

接下来,可以通过 npm run build 进行应用构建。

构建完成:
在这里插入图片描述
构建会打包所有的资源,包含 JavaScript, CSS, Web Fonts, Html, 图片等。

构建完成之后,生成的文件在 /dist/ 目录下。如下图:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Umi + React + Ant Design Pro 项目实践(六)—— ProLayout 应用 的相关文章

  • 在其他不可滚动的 div 上滚动时如何滚动可滚动的 div?

    我知道这个问题听起来很令人困惑 但这就是我想要做的 在下面的代码片段中 如果用户在绿色 div 上滚动 我希望黄色 div 相应地滚动 就像滚动黄色 div 一样 请注意 黄色 div 有overflow auto 但绿色的则不然 docu
  • Crypto-Js 库的 hmac-256 脚本返回函数结构而不是 Google Apps 脚本中的值,在外部工作正常吗?

    我正在设置一个谷歌电子表格项目来连接到我的 CryptoExchange API 但是当涉及到这个简单的 CryptoJs Hmac sha256 脚本时 它不起作用 它返回函数结构而不是值 而在外部它工作正常 看我的jsfiddle ht
  • Angularjs 完整日历不显示事件

    我正在用那个https github com angular ui ui calendar https github com angular ui ui calendar在 Angularjs 中使用 FullCalendar 它显示日历并
  • 递归修剪对象中所有元素的更好方法?

    如果我有一个像这样的物体 const obj field subfield innerObj a asdasd asdas innerArr s ssad innerArrObj b adsad 我想出了这样的东西 const trimFi
  • html canvas动画卡顿

    谁能解释为什么提供的画布动画断断续续 我创建了一个测试存根来演示该问题 我在桌面上的 FF Chrome IE 以及 Android 上的 FF 和 Chrome 中看到了卡顿现象 口吃是由于垃圾收集造成的吗 似乎 raf 在每次调用时都会
  • JavaScript:常量属性

    在javascript中 我可以将对象的属性声明为常量吗 这是一个示例对象 var XU Cc Components classes or function aXU this Cc Components classes var XU new
  • setInterval() 在用户离开选项卡时暂停?

    javascript 中是否有任何方法的行为类似于 setInterval 并且当用户离开选项卡时停止并在用户再次进入选项卡时恢复 您可以使用以下方法创建自己的 API可见性API https developer mozilla org e
  • 窗口大小调整触发的 DOM 事件

    我有一个布局相当复杂的页面 最初打开页面时 某些元素的对齐存在问题 但是 可以通过更改浏览器窗口的大小来 永久 解决此问题 显然 我不希望用户必须调整浏览器窗口的大小才能使页面正确显示 所以我想知道是否有一种方法可以在页面首次加载时以编程方
  • 类型“void”不可分配给类型“((event:MouseEvent) => void) |不明确的'

    import as React from react import App css import PageTwo from components PageTwo export interface IPropsk data Array
  • 如何知道浏览器空闲时间?

    如何跟踪浏览器空闲时间 我用的是IE8 我没有使用任何会话管理 也不想在服务器端处理它 这是纯 JavaScript 方法来跟踪空闲时间 并在达到一定限制时执行一些操作 var IDLE TIMEOUT 60 seconds var idl
  • put方法中的Angularjs文件上传不起作用

    我有一个简单的待办事项应用程序 我试图在其中上传照片和单个待办事项 现在我已经创建了这个工厂函数来负责待办事项的创建 todosFactory insertTodo function todo return http post baseUr
  • 将 window.location 传递给 Flask url_for

    我正在使用 python 在我的页面上 当匿名用户转到登录页面时 我想将一个变量传递到后端 以便它指示用户来自哪里 发送 URL 因此 当用户单击此锚链接时 a href Sign in a 我想发送用户当前所在页面的当前 URL
  • @aspnet/signalr 与 @microsoft/signalr javascript 库

    aspnet signalr 与 microsoft signalr javascript 库有什么区别 两者似乎都对 DotNetCore SignalR 有效 两者似乎都很活跃 在一些教程中 我找到 aspnet signalr 在Do
  • 尝试使用 Firebug 查找 JavaScript 文件中的函数

    我试图找到这个函数调用 myFooBar 该函数在某些 HTML 中内联引用 但页面加载了大量 JavaScript 并且在每个文件中搜索该函数需要相当多的工作 如何使用 Firebug 找到此函数所在的 JavaScript 文件 打开脚
  • JavaScript Promise 不执行 .then()

    我在 JavaScript 中的 Promise 方面遇到了一些问题 我想做的是获得一个地址列表 然后对于每个地址 我需要调用地理编码 API 来获取 lat lng 然后我将继续将标记与热图一起绘制 这是我的代码 let promiseK
  • 是否可以将请求标头添加到 CORS 预检请求中?

    我有一个从外部服务器 不是服务器 访问 API 的网站 为网站提供服务 通过简单的XmlHttpRequest 见下文 那个API 需要将用于访问服务的 API 密钥添加为请求标头 然而 正如这些CORS https developer m
  • 检测浏览器选项卡是否具有焦点

    是否有可靠的跨浏览器方法来检测选项卡是否具有焦点 场景是 我们有一个定期轮询股票价格的应用程序 如果页面没有焦点 我们可以停止轮询并为每个人节省流量噪音 特别是当人们喜欢打开具有不同投资组合的多个选项卡时 Is window onblur
  • 具有固定顶部菜单的语义 UI 侧边栏

    Semantic UI 对其进行预警侧边栏页面 http semantic ui com modules sidebar html usage 当侧边栏出现时 固定位置内容可能会出现改变其位置的问题 然后它提供了该问题的两种可能的解决方案
  • AngularJS 在指令运行之前通过 AJAX 检索数据

    我正在使用 AngularUIuiMap http angular ui github com directives map实例化谷歌地图的指令 uiMap 指令非常适合处理硬编码数据 mapOptions and myMarkers 但是
  • 用javascript调用外部网页(跨域)

    我正在尝试使用以下网络服务来验证提要这个问题 https stackoverflow com questions 11996430 check if a url is a valid feed 但浏览器不允许我向另一台服务器发送 ajax

随机推荐

  • Python数据分析-房价预测及模型分析

    摘 要 Python数据分析 房价的影响因素图解https blog csdn net weixin 42341655 article details 120299008 spm 1001 2014 3001 5501 上一篇OF讲述了房价
  • SpringBoot +Hadoop3.0.3 mapreduce 实例

    第一步 编码过程 项目结构 pom xml 依赖jar文件
  • Linux 实操篇-实用指令

    Linux 实操篇 实用指令 指定运行级别 基本介绍 运行级别说明 0 关机 1 单用户 找回丢失密码 2 多用户状态没有网络服务 3 多用户状态有网络服务 4 系统未使用保留给用户 5 图形界面 6 系统重启 常用运行级别是3 和5 也可
  • 第二节:数据类型——number和string

    上节回顾 undefined为window的属性 有些程序会在函数开始置定义一个var undefined 这是因为undefined是window的一个属性 当你判断某一个东西是不是undefined的时候 计算机会到window中整体去
  • Oracle 创建、暂停、更改、删除 定时任务job

    oracle job 用来在数据库层面 定时执行存储过程或者是 SQL 语句 创建 暂停 修改 删除 job 查询 当前库中运行的 job SELECT t FROM dba jobs t 创建一个 定时任务 job declare job
  • 【Django快速开发实战】(52~76)使用Django创建一个基础应用:职位管理系统

    52 生产环境要注意哪些事项 生产环境的应用部署 单元测试 老师的testcase test views py from django test import TestCase from django test import Client
  • 卷积神经网络原理简述

    1 CNN原理 卷积神经网络主要应用在图像识别领域中 是指非某类网络的集合 其中包含了多种不同类型的结构 不同网络结构 其性能一般也会有所不同 通过对CNN几种典型架构的研究 我们可以发现这些网络创造者们极富创意 其中许多架构十分精巧 他们
  • Java从入门到实战总结-4.1、数据库基础

    Java从入门到实战总结 4 1 数据库基础 文章目录 Java从入门到实战总结 4 1 数据库基础 第一章 数据库简介 1 1 简介 1 2 常见数据库管理系统 1 3 三大范式 规范 1 4 MySQL安装和卸载 1 4 1 windo
  • 使用cisco 2500路由器实现ADSL接入

    使用cisco 2500路由器实现ADSL接入 此案例配置共分7步 第一步 配置vpdn vpdn enable 启用路由器的虚拟专用拨号网络 d vpdn group office 建立一个vpdn组 request dialin 初始化
  • 【Causality】结构因果下的反事实基本框架

    在之前 博主整理了因果关系之梯第二层 干预的定义 意义 用法 详见以下链接 但干预的目标是找到研究中处理的某个总效应或者在某些样本群体中的效应 平均因果效应 到目前为止我们无法在特定时间谈论个性化的因果关系 而在实际的任务中 我们通过训练集
  • echart 图谱_vue + echarts 实现有层级关系图的图谱

    因为接下来要做的事是一个关系图的东西 所以自己先写一个小demo 特次记录一下 主要实现的点有如下 节点的颜色的更改 自定义提示框配置 以及在里面的点击事件 提示框中的点击事件可以获取到vue实例 图列的自定义 先上效果图 截屏2020 1
  • 记录一些IDEA常用的快捷键和技巧 二(界面布局)

    创建项目 会开启一个进入默认布局界面 如下图 左边依次为 Project视图 Favorites视图以及Structure视图 其中主要关注Project视图 创建Package要注意 将project 右上角齿轮勾选 Flatten Pa
  • 小白入门级知识点:移动app安全测试怎么做?

    随着科技时代的进步和智能手机的普及 现代人离不开手机已经是常态化 一旦手机不在身边便会失去安全感 提到安全一词 我们在使用手机app软件时 安全至关重要 软件里包含的个人信息 资料等等都和安全挂钩 那么在软件测试中移动app安全测试应该怎么
  • python实现线程池

    参照c 的线程池 使用python的threading库实现线程池 import threading import time 线程池的任务 包含一个可调用对象和一个参数数组 class ThreadTask object def init
  • [uC/OS-III] 22. 互斥量

    1 互斥量的基本概念 互斥量又称互斥信号量 本质也是一种信号量 不具备传递数据功能 是一种特殊的二值信号量 它和信号量不同的是 它支持互斥量所有权 递归访问以及防止优先级翻转的特性 用于实现对临界资源的独占式处理 任意时刻互斥量的状态只有两
  • Linux常用基本命令

    目录 1 帮助命令 man 获取帮助信息 type 查看命令是内置命令还是外部命令 help 获取帮助信息 2 文件目录类 pwd 显示当前目录的绝对路径 ls 列出目录中的内容 cd 进入相对应的目录中 mkdir 创建文件夹子 rmdi
  • 安全与加密

    1 使用对称加密算法 实现敏感数据加密 1 1 什么是对称加密 Symmetric encryption
  • (Qt Installer Framework)程序简易打包教程

    Qt Installer Framework 程序简易打包教程 Qt Installer Framework程序简易打包教程 第一步下载Qt Installer Framework 第二步 打包程序安装和环境变量的配置 第三步准好要打包的程
  • C/C++中this指针作用

    this 指针是一个隐含于每一个成员函数中的特殊指针 它指向正在被该成员函数操作的那个对象 当对一个对象调用成员函数时 编译程序先将对象的地址赋给 this 指针 然后调用成员函数 每次成员函数存取数据成员时 由隐含使用 this 指针 当
  • Umi + React + Ant Design Pro 项目实践(六)—— ProLayout 应用

    打开 umirc ts 文件 import defineConfig from umi export default defineConfig plugins umijs plugins dist react query reactQuer