概要

路由配置是单页应用的核心之一, antd pro 将所有的路由配置集中在一个文件中, 可以更好的对应用的全局进行管理.

同时, 它的路由还和菜单和面包屑自动关联上了, 真的是给开发节省了大量的时间.

antd pro 路由简介

首先创建一个 antd pro 的项目, 创建方法很简单, 参见 antd pro 的文档

antd pro 的路由配置文件在项目根目录下的 config 文件夹中: /config/config.js

这里简单介绍路由相关的配置, 所以对默认生成的模板做一些改动, 去除登录和权限的部分. 并定义一些示例的菜单.

1 routes: [

2 {

3 path: '/',

4 component: '../layouts/BasicLayout',

5 routes: [

6 {

7 path: '/',

8 redirect: '/menu1/menu11/menu111',

9 },

10 {

11 path: '/menu1',

12 name: 'menu1',

13 routes: [

14 {

15 path: '/menu1/menu11',

16 name: 'menu11',

17 routes: [

18 {

19 path: '/menu1/menu11/menu111',

20 name: 'menu111',

21 component: './routeSample/Menu111',

22 },

23 {

24 path: '/menu1/menu11/menu112',

25 name: 'menu112',

26 component: './routeSample/Menu112',

27 },

28 ],

29 },

30 {

31 path: '/menu1/menu12',

32 name: 'menu12',

33 component: './routeSample/Menu12',

34 },

35 ],

36 },

37 {

38 path: '/menu2',

39 name: 'menu2',

40 routes: [

41 {

42 path: '/menu2/menu21',

43 name: 'menu21',

44 component: './routeSample/Menu21',

45 },

46 ],

47 },

48 ],

49 },

50 {

51 component: './404',

52 },

53 ],

如上配置后, 显示的效果如下:

每个菜单对应的页面很简单, 只是显示一行文字:

1 # 页面路径

2 $ ls ./src/pages/routeSample

3 Menu111.jsx Menu112.jsx Menu12.jsx Menu21.jsx

页面的代码如下: (以 Menu111.jsx 为例)

1 import React from 'react';

2 import { PageHeaderWrapper } from '@ant-design/pro-layout';

3 import { Card } from 'antd';

4

5 export default () => (

6

7

8

这是菜单1-1-1

9

10

11 );

路由, 菜单和面包屑

在 config.js 中配置路由之后, 会自动生成菜单和面包屑, 菜单和面包屑的名称就是 name 属性定义的

1 {

2 path: '/menu2/menu21',

3 name: 'menu21', // 这个就是定义菜单和面包屑显示的名称

4 component: './routeSample/Menu21',

5 },

这里的名称是 menu21, 但是页面上显示的是 菜单 2-1,

这是因为 antd pro 中默认启用了国际化功能. 菜单的名称在 ./src/locales/zh-CN/menu.js 中配置

1 export default {

2 'menu.welcome': '欢迎',

3 'menu.home': '首页',

4 'menu.menu1': '菜单1',

5 'menu.menu1.menu11': '菜单1-1',

6 'menu.menu1.menu11.menu111': '菜单1-1-1',

7 'menu.menu1.menu11.menu112': '菜单1-1-2',

8 'menu.menu1.menu12': '菜单1-2',

9 'menu.menu2': '菜单2',

10 'menu.menu2.menu21': '菜单2-1',

11 };

页面之间的路由

创建个新的页面 Create.jsx, 添加测试的按钮, 在 menu112 中互相跳转

首先, 在 config.js 中配置路由信息

1 {

2 path: '/menu1/menu11/menu112',

3 name: 'menu112',

4 component: './routeSample/Menu112',

5 },

6 // 下面是新增的部分

7 {

8 path: '/menu1/menu11/menu112/create',

9 name: 'create',

10 hideInMenu: true, // 这里设置为true, 就不会显示在菜单中

11 component: './routeSample/Create',

12 },

Create.jsx 内容如下:

1 import React from 'react';

2 import { history } from 'umi';

3 import { PageHeaderWrapper } from '@ant-design/pro-layout';

4 import { Card, Button } from 'antd';

5

6 export default () => (

7

8

9

这是用来新增内容的页面

10

11 onClick={() => {

12 history.goBack();

13 }}

14 >

15 返回

16

17

18

19 );

umi3 中, 没有 umi/router 这个 package 了, 需要使用 history 来进行路由跳转, antd pro 中的相关文档可能还没有更新

history.goBack() 用来返回上一次的路由

Menu112.jsx 中放个测试按钮来跳转到 这个新增页面

1 export default () => (

2

3

4

这是菜单1-1-2

5

6 type="primary"

7 onClick={() => {

8 history.push('/menu1/menu11/menu112/create');

9 }}

10 >

11 新增

12

13

14

15 );

这样, Create.jsx 和 Menu112.jsx 之间就可以来回跳转了

带参数的路由

再加个页面 Edit.jsx, 演示路由中参数的传递.

同样, 现在路由配置中加上 Edit.jsx 的路由

1 {

2 path: '/menu1/menu11/menu112/create',

3 name: 'create',

4 hideInMenu: true,

5 component: './routeSample/Create',

6 },

7 {

8 path: '/menu1/menu11/menu112/edit/:id', // 这里 :id 就是路由中的参数

9 name: 'edit',

10 hideInMenu: true,

11 component: './routeSample/Edit',

12 },

menu.js 中别忘了加上 name edit 对应的配置.

然后, 在 Menu112.jsx 中再增加一个 编辑 按钮

1 import React from 'react';

2 import { history } from 'umi';

3 import { PageHeaderWrapper } from '@ant-design/pro-layout';

4 import { Card, Button } from 'antd';

5

6 export default () => (

7

8

9

这是菜单1-1-2

10

11 type="primary"

12 onClick={() => {

13 history.push('/menu1/menu11/menu112/create');

14 }}

15 >

16 新增

17

18

19

20 type="primary"

21 onClick={() => {

22 history.push('/menu1/menu11/menu112/edit/111');

23 }}

24 >

25 编辑

26

27

28

29 );

这里传入参数 id 的值是 111

最后是 Edit.jsx 页面的代码:

1 import React from 'react';

2 import { history, useParams } from 'umi';

3 import { PageHeaderWrapper } from '@ant-design/pro-layout';

4 import { Card, Button } from 'antd';

5

6 export default () => {

7 const params = useParams();

8 return (

9

10

11

这是用来编辑内容的页面

12

参数 ID: {params.id}

13

14 onClick={() => {

15 history.goBack();

16 }}

17 >

18 返回

19

20

21

22 );

23 };

获取参数就是使用 useParams 这个 API

总结

最后, 是几个相关页面的截图:

Menu112.jsx

Create.jsx

Edit.jsx

补充一点, 路由中参数尽量简单, 如果页面之间传输的数据比较多, 那么最好通过 antd pro 的 Model 来共享. 尽量不要在 url 中放置太多的东西.

antd pro mysql_antd pro 路由相关推荐

  1. antd pro mysql_antd pro table中的文件上传

    概述 项目中经常会遇到在表格中展示图片的需求(比如展示用户信息时, 有一列是用户的头像). antd pro table 的功能很强大, 对于常规的信息展示只需参照示例配置 column 就可以了. ...

  2. ant design pro vue 动态路由 流程详解

    ant design pro vue 动态路由 流程详解 前言 流程图 流程1 src/permission.js 流程2 src/store/modules/user.js 流程3 src/perm ...

  3. Wing IDE Pro (Wing pro 6.0) for Ubuntu/linux

    Wing IDE Pro (Wing pro 6.0) for Ubuntu/linux 首先将下面的代码保存为aa.py 文件 代码源自:http://blog.csdn.net/u01288532 ...

  4. 微软设计套装 Expression Studio 4 (Ultimate+Web Pro+Encoder Pro) 最新版下载

    微软设计套装 Expression Studio 4 (Ultimate+Web Pro+Encoder Pro) 最新版下载 转载于:https://www.cnblogs.com/gavinhug ...

  5. iPhone 13 Pro 和 Pro Max 评测

    每年我们都期待新的iPhone,希望它能带来一些新的东西,然而今年的更新远非革命性的,许多用户认为 iPhone 13 Pro 才是 12 Pro 应该有的样子.那么iPhone 13 Pro 和 P ...

  6. ant design pro实现动态路由以及权限的控制

    dynamic-menu-router ant design pro动态路由权限,目前基于ant design pro1.4.4版本,只用于左侧菜单权限的设置和按钮权限设置,关于最新版本权限的更新,敬 ...

  7. Ant Design Pro 跳转路由 传参数,接收参数

    umi/link 通过声明的方式做路由跳转. 例子: import Link from 'umi/link';export default () => {<div>/* 普通使用 * ...

  8. 安卓存储性能测试软件,安卓版PCMark存储性能测试:魅族Pro 5/Pro 6都逆袭S7 edge了...

    拼 命 加 载 中 ... PC性能测试中,Futuremark的3DMark.PCMark占据着统治性地位,是最常用的基准测试软件之一.在移动平台上,他们的3DMark及PCMark来得晚了点,前者 ...

  9. ant design pro 5_iPhone12/Pro现已在天猫旗舰店下架

    11月5日消息 苹果 iPhone 12 与 iPhone 12 Pro 现已在 Apple Store 天猫旗舰店下架.经验证,Apple Store 天猫官方旗舰店商品页面显示, iPhone 1 ...

最新文章

  1. 困难样本挖掘(Online Hard Sample Mining)
  2. Andriod --- JetPack (三):ViewModel 的诞生
  3. pandas to_dict 的用法
  4. 教你从头写游戏服务器框架
  5. ffmpeg libx264_编程小短文:FFmpeg视频画面尺寸调整,必知必会
  6. GreenPlum数据库故障恢复测试
  7. 【小马哥】Spring Boot系列讲座
  8. rpm安装mysql5.5_CentOS下以RPM方式安装MySQL5.5
  9. 网页速度很慢优化方案:如何提高网页加载速度,提升网站加载速度
  10. C ++标准是否允许未初始化的bool使程序崩溃?
  11. 自己编译vim,解决Ubuntu 12.04 terminal里执行gvim会挂起的问题
  12. 使用Windows service创建一个简单的定时器
  13. Sator提供其Orca流动性池的六周,增长更新一览
  14. centos7上部署php7遇到的坑
  15. 英语基础知识:非谓语使用规则上篇
  16. delphi使用Foxit Quick PDF Library读写pdf文本和图片
  17. Pixhawk RPi CM4 Baseboard 树莓派CM4安装Ubuntu20.04 server 配置ros mavros mavsdk
  18. APP地推心得:可复制的APP地推方案
  19. RX 6500 XT参数 RX6500xt怎么样
  20. js中window。location.search的用法和作用。

热门文章

  1. 计算机原理林美华实验,ll1语法分析器实验报告.doc
  2. Shell学习笔记(三)——获取文件夹里所有文件的文件名
  3. 车内看车头正不正技巧_路边临时侧方位停车技巧,七个关键环节分解动作实录详解...
  4. 【Python100天学习笔记】番外篇 Python面试面经、笔试题目汇总
  5. YOLOV7-pose训练数据遇到的问题。
  6. React搭建个人博客
  7. python 等号报错_python提示Syntax Error报错解决教程
  8. category显示html,wordpress文章.html伪静态,分类category和页面设置 - 搜外SEO问答
  9. 显示HWC合成(hwc_display_contents_1_t,hwc_layer_1_t数据结构关系)
  10. 快捷-Mac桌面adb push小工具