AntDesignPro开发手册精编版
ant design pro procolumns dependencies 用法
ant design pro procolumns dependencies 用法1. 引言1.1 概述在当今互联网技术飞速发展的背景下,前端开发已经成为企业及个人必不可少的一部分。
为了提高效率和规范化开发,许多前端开发框架应运而生。
Ant Design Pro是一个基于React和Ant Design的企业级中后台前端/设计解决方案,它提供了丰富的UI组件和便捷的开发工具。
1.2 文章结构本文将围绕着Ant Design Pro ProColumns这一重要组件展开介绍,并重点关注其依赖项管理方面。
首先,文章会对Ant Design Pro进行简单介绍,包括其特点和使用场景。
然后进入正题,介绍ProColumns组件的背景、功能和特性,并给出详细的使用方法和示例代码。
最后,我们将重点讨论Dependencies依赖项的安装、配置以及版本兼容性注意事项。
最后在结论与展望部分对文章内容做总结,并对Ant Design Pro及其相关组件进行评价和展望。
1.3 目的本文旨在帮助读者深入理解Ant Design Pro框架以及其中一个重要组件ProColumns的使用方法。
通过详细介绍ProColumns组件的功能和特性,读者可以更好地使用该组件来构建企业级中后台应用。
同时,在依赖项管理方面的讨论也将有助于读者更好地配置和维护项目所需的依赖项,提高开发效率和代码质量。
最终,通过对Ant Design Pro框架及其相关组件的评价和展望,读者可以对未来前端开发趋势有更清晰的认识,并为自己的项目做出合理的选择和规划。
2. Ant Design Pro:2.1 简介:Ant Design Pro 是基于React 和Ant Design 的开箱即用的中台前端/设计解决方案。
它提供了丰富的页面布局和组件,帮助开发者快速搭建出美观、高效的企业级应用。
2.2 特点:Ant Design Pro 具有以下特点:- 易用性:Ant Design Pro 提供了完整的开发工具链,包括脚手架、集成测试等,使得开发体验更加流畅。
ant design pro用法
ant design pro用法摘要:1.Ant Design Pro 简介2.Ant Design Pro 的用法3.Ant Design Pro 的优势和应用场景正文:Ant Design Pro 是一个基于React 的UI 设计语言和组件库,它提供了丰富的UI 组件和样式,可以帮助开发者快速构建企业级应用。
Ant Design Pro 的用法主要包括以下几个方面:首先,安装和配置Ant Design Pro。
在项目中安装Ant Design Pro 依赖包,然后在项目中引入相应的样式文件和组件库,就可以开始使用Ant Design Pro 的组件了。
其次,学习和使用Ant Design Pro 的组件。
Ant Design Pro 提供了丰富的UI 组件,包括表格、表单、菜单、弹窗等,开发者可以根据需要选择和使用这些组件。
使用这些组件时,需要遵循Ant Design Pro 的语法和规范,以确保组件的正确使用和良好的用户体验。
最后,使用Ant Design Pro 构建应用。
在实际的项目中,开发者需要根据业务需求,使用Ant Design Pro 的组件构建应用。
在这个过程中,开发者需要充分理解和掌握Ant Design Pro 的组件和语法,以便更好地使用这些组件。
Ant Design Pro 的优势在于,它提供了一整套企业级的UI 组件和样式,可以帮助开发者快速构建应用,提高开发效率。
同时,Ant Design Pro 的组件库和样式库都是开源的,可以方便地定制和扩展。
因此,Ant Design Pro 广泛应用于企业级应用的开发中。
总之,Ant Design Pro 是一个实用的UI 设计语言和组件库,它可以帮助开发者快速构建企业级应用。
【AntDesignPro】基本配置和工作流程
【AntDesignPro】基本配置和⼯作流程⼀、常⽤的⼏个⽬录:config :配置⽂件config.js :路由定义⽂件&&代理路径⽂件defaultSettings.js :主题颜⾊以及标题配置⽂件plugin.config.js :没怎么⽤过的配置⽂件mock:mock数据⽂件,⽤于本地开发使⽤public:静态图⽚资源src :开发项⽬⽂件(主要在此⽬录下进⾏发)assets :存放平台logocomponents :全局组件⽂件夹layouts :全局布局⽂件locales:国际化⽂件models :数据仓库,每个⽂件都需要⼀个命名空间,定义全局请求函数pages:页⾯⽂件service :全局service 发起请求⽂件utils :⼯具⽂件其中会有⾃定义request.js平时主要⽤4个⽂件:mock、page、models、services⼆、module内容具体分析在model中存在 namespace(命名空间,⽤来区分不同的页⾯之间的数据),state(该命名空间下的数据),effects(⼀些异步请求的api⽅法定义在这⾥),reducers(⽤来修改state的⼀些函数定义在reducers下)⽂件包含以下⼏个模块(实际上都是javascript对象):state => 数据构成effects => 处理异步action,采⽤generator的相关概念,将异步转化成同步写法。
reducers => 处理同步action,相当于redux中的reducer函数,纯函数(即相同的输⼊得到相同的输出)routes 业务组件,通常是需要连接数据仓库的组件。
我们通过connect连接数据仓库之后可以通过this.props获取到数据和dispatch⽅法,并使⽤dispatch派发action来达到更新state(即更新数据仓库)的操作。
components 通⽤组件(纯组件),通常是⼀些复⽤性很强的组件,不需要连接数据仓库。
ant design pro 反编译
《深度解析 Ant Design Pro 反编译》一、介绍Ant Design Pro 是一个开箱即用的企业级中后台前端/设计解决方案,它基于 Ant Design 设计体系,非常适合中后台产品。
但是,有时我们需要对 Ant Design Pro 进行反编译,以满足特定需求或深入理解其内部实现。
二、什么是反编译反编译是指将已编译的程序代码转换回其原始源代码的过程。
在前端开发中,反编译 Ant Design Pro 可以帮助我们更深入地了解其内部实现,并对其进行定制化或优化。
三、反编译的方法1. 基于源码:通过对 Ant Design Pro 源码进行分析和调试,可以逐步理解其结构和功能,并进行必要的修改。
2. 使用工具:利用一些前端反编译工具,如 webpack-deobfuscate 等,可以直接对 Ant Design Pro 进行反编译,获取其源码或相关信息。
四、深度解析 Ant Design Pro 反编译过程1. 对 Ant Design Pro 源码的分析和调试在进行反编译之前,我们需要先对 Ant Design Pro 的源码进行分析和调试。
通过阅读源码、调试代码以及查阅文档,可以逐步理解 Ant Design Pro 的各个模块、组件和功能,并为接下来的反编译做好准备。
2. 反编译工具的使用如果对 Ant Design Pro 的源码不够熟悉,或者需要快速获取其代码信息,可以使用一些前端反编译工具。
这些工具可以帮助我们直接解析Ant Design Pro 的编译代码,获取其中的源码、配置信息或其他相关内容。
五、实际应用与个人观点在实际项目中,我曾遇到需要对 Ant Design Pro 进行反编译的情况。
通过反编译,我深入了解了 Ant Design Pro 的内部实现和组织结构,从而能够更好地定制和优化其功能,满足项目的特定需求。
总结通过对 Ant Design Pro 的反编译,我们可以更深入地了解其内部实现,并进行必要的定制化或优化。
ant design pro用法
ant design pro用法
Ant Design Pro 是一款基于 Ant Design 设计语言的企业级中后
台前端/设计解决方案,提供了丰富的UI组件、样式和布局模板,帮助开发者快速构建美观、功能强大的中后台应用。
下面是 Ant Design Pro 的用法:
1. 创建新项目:
打开终端,使用以下命令创建一个新的Ant Design Pro 项目: ```shell
$ yarn create umi
# 选择 ant-design-pro-antd
```
2. 配置项目:
进入项目文件夹,并编辑 `.env` 文件,配置项目的环境变量
和 API 地址等。
3. 开发页面:
在 `src/pages` 目录下创建新的页面文件,例如
`src/pages/UserList.tsx`。
编写页面代码、调用 Ant Design Pro
提供的组件和样式。
4. 路由配置:
在 `config/routes.ts` 文件中配置页面的路由信息,指定页面
的路径和对应的组件。
5. 数据管理:
使用 Ant Design Pro 提供的 `UseRequest` 钩子处理数据请求和管理状态。
6. 构建与部署:
执行以下命令构建项目:
```shell
$ yarn build
```
在构建完成后,可以将生成的静态文件部署到服务器上。
这些是 Ant Design Pro 的基本用法,除此之外,还可以通过定制化主题、使用插件、配置权限等扩展其功能。
详细的用法和示例可以参考 Ant Design Pro 的官方文档。
antd pro用法
antdpro用法AntDesign(简称Antd)是一款由阿里巴巴团队开发的优秀React组件库,被广泛应用于前端开发。
AntdPro是AntDesign的商业版本,提供了更多高级功能和定制选项,以满足不同企业的需求。
在本篇文章中,我们将介绍AntdPro的基本用法,帮助您快速上手。
一、安装与引入要使用AntdPro,首先需要在项目中安装它。
您可以通过npm或yarn等包管理器进行安装。
在终端中执行以下命令即可安装AntdPro:```shellnpminstallantd-pro```安装完成后,您需要将AntdPro的组件引入到项目中。
您可以在需要使用组件的文件的顶部引入所需的组件,例如:```javascriptimport{Button,Table}from'antd-pro';```二、组件介绍AntdPro提供了丰富的组件,包括表单、导航、提示、对话框、按钮、输入框、表格等。
以下是一些常用组件的基本用法示例:1.按钮(Button):```javascript<Buttontype="primary">主要按钮</Button><Buttontype="dashed"disabled>虚线按钮</Button><ButtononClick={handleClick}>点击我</Button>```2.表格(Table):```javascript<Tablecolumns={columns}dataSource={data}/>```其中,`columns`是一个数组,用于定义表格的列,`dataSource`是一个数组,用于提供表格的数据。
3.表单(Form):```javascript<Form.Itemlabel="用户名"><Input/></Form.Item>```Form组件提供了丰富的表单控件,如文本框、选择器、复选框等。
antdesignpro(六)样式
antdesignpro(六)样式⼀、概述 基础的 CSS 知识或查阅属性,可以参考。
⼆、详细介绍2.1、less Ant Design Pro 默认使⽤ less 作为样式语⾔,建议在使⽤前或者遇到疑问时学习⼀下的相关特性。
2.2、css modules 在样式开发过程中,有两个问题⽐较突出: 全局污染 —— CSS ⽂件中的选择器是全局⽣效的,不同⽂件中的同名选择器,根据 build 后⽣成⽂件中的先后顺序,后⾯的样式会将前⾯的覆盖; 选择器复杂 —— 为了避免上⾯的问题,我们在编写样式的时候不得不⼩⼼翼翼,类名⾥会带上限制范围的标识,变得越来越长,多⼈开发时还很容易导致命名风格混乱,⼀个元素上使⽤的选择器个数也可能越来越多。
为了解决上述问题,我们的脚⼿架默认使⽤ CSS Modules 模块化⽅案,先来看下在这种模式下怎么写样式。
// example.jsimport styles from './example.less';export default ({ title }) => <div className={styles.title}>{title}</div>;// example.less.title {color: @heading-color;font-weight: 600;margin-bottom: 16px;}⽤ less 写样式好像没什么改变,只是类名⽐较简单(实际项⽬中也是这样),js ⽂件的改变就是在设置 className 时,⽤⼀个对象属性取代了原来的字符串,属性名跟 less ⽂件中对应的类名相同,对象从 less ⽂件中引⼊。
局部样式与全局样式 在上⾯的样式⽂件中,.title只会在本⽂件⽣效,你可以在其他任意⽂件中使⽤同名选择器,也不会对这⾥造成影响。
不过有的时候,我们就是想要⼀个全局⽣效的样式呢?可以使⽤:global。
ant design pro
ant design proAnt Design Pro: A Comprehensive GuideIntroduction:Ant Design Pro is a set of enterprise-level UI design language and components that allows developers to build high-quality web applications quickly and efficiently. It follows the principles of Ant Design and provides a ready-to-use, feature-rich toolbox for developers.1. Getting Started with Ant Design Pro1.1 Installation and Setup:- Install Node.js and npm- Create a new project using the command-line interface- Install Ant Design Pro dependencies and start the development server1.2 Project Structure:- Understand the structure of an Ant Design Pro project- Introduction to key directories and files- Customize the project structure to fit your requirements2. Building a Layout2.1 Understanding the Layout Component:- Learn about the Layout component and its key features- Explore the different layout types available in Ant Design Pro2.2 Customizing the Layout:- Use the SiderMenu component to create a navigation menu- Customize the header, footer, and sidebar to match your brand identity- Implement responsive design for different screen sizes3. Working with Pages and Routes3.1 Creating Pages:- Create new pages using the Page component- Understand the routing system in Ant Design Pro3.2 Routing Configuration:- Configure routes for different pages and components - Implement dynamic routing and nested routes- Use route guards for authentication and permission handling4. Data Management with Ant Design Pro4.1 Managing Data with Models:- Introduction to models and their benefits in Ant Design Pro- Create models using the @umijs/plugin-model plugin- Utilize model subscriptions and effects for data management4.2 Using API Services:- Interact with APIs using the request object in Ant Design Pro- Handle API calls, authentication, and error handling- Implement CRUD operations with API services5. Enhancing User Experience with Ant Design Pro5.1 Internationalization and Localization:- Implement multi-language support using Ant Design Pro's localization features- Customize translations and language switching5.2 Theming:- Customize the theme for your application- Change colors, typography, and other visual aspects5.3 Form Validation and Error Handling:- Validate user inputs using Ant Design Pro's built-in form validation rules- Handle form submission errors and display meaningful error messages6. Deploying and Testing Ant Design Pro Applications6.1 Deployment Options:- Deploy an Ant Design Pro application to different environments (development, staging, production)- Host the application on different platforms (AWS, Heroku, etc.)6.2 Testing Strategies:- Write and run unit tests for Ant Design Pro components and modules- Use testing frameworks like Jest and Enzyme7. Conclusion:In this guide, we explored the various aspects of Ant Design Pro and learned how to build high-quality web applications using this powerful framework. From installation to deployment, we covered the key features and customization options available. By following this guide, you'll be well-equipped to create professional and efficient web applications using Ant Design Pro.。
AntDesignproofVue从零开始(1)
AntDesignproofVue从零开始(1)从零开始对Ant Design pro of Vue的使⽤教程使⽤软件我们要⽤到的软件是Visual Studio Code准备⼯作我们的本地环境需要⽤到node以及git我们先安装node打开以后会出现下⾯这些这时候就需要根据⾃⼰本⾝情况去选择要⽤到的node我使⽤的是傻⽠式的下载,点击⼀下就可以了,可能是我之前下过的原因,我需要⼿动的去打开⼀直next就可以了,中间有要安装的路径,如果需要可以更改⼀下路径如果出现下⾯这个页⾯以后就证明已经安装完成了我们下⾯进⾏git的安装打开以后我们可以看到下⾯的这个页⾯然后点击这⼀个的下载可能会有⼀点慢需要耐⼼等待⼀下下载完打开就是下⾯这个页⾯直接点击next黄⾊的框⾥⾯不要动上⾯的红⾊框⾥⾯是是否添加桌⾯快捷,下⾯的红⾊框⾥⾯是决定在所有控制台窗⼝中使⽤TrueType字体和是否每天检查Git是否有Windows更新的,这些可以根据个⼈需求来添加如果不需要的话直接点击next后⾯全部点击next就可以了,基本上也⽤不到其他的,当你出现这个页⾯的时候,证明你已经成功安装了下⾯开始拉取项⽬代码打开cmd,打开到你要将项⽬放到的位置因为我的是放在E盘⾥⾯的,所以我要先打开到E盘⼀直cd 到我们的⽬标⽂件夹。
下⾯就要开始拉取项⽬了(不要着急关上它)下⾯要开始安装依赖,我们在继续cd到这个⽂件夹⾥。
然后进⾏以来的安装再输⼊:yarn install下⾯可以看到我们安装版本,我的这个版本就是V1.22.17等待它安装完成以后基本上可以说已经完成了我们再输⼊yarn run serve 等待他彻底加载完后,我们就可以看到这么⼀个画⾯这个时候就算是完成了,这个时候我们就可以进⾏后续的操作了。
react ant design pro proform使用 -回复
react ant design pro proform使用-回复「React Ant Design Pro ProForm 使用」是一个非常热门的主题,因为React Ant Design Pro ProForm 是一个非常受欢迎的React UI 组件库和表单生成工具。
在本篇文章中,我将一步一步回答关于React Ant Design Pro ProForm 的使用、特性和示例等问题,帮助读者了解和使用这个强大的组件库和工具。
一、什么是React Ant Design Pro ProForm?React Ant Design Pro ProForm 是Ant Design Pro 框架自带的表单生成工具。
它基于React 和Ant Design Pro 提供了一种简单且强大的方式来创建表单,并且自动完成表单的校验、数据格式化、布局等功能。
React Ant Design Pro ProForm 具有以下特点:1. 自动生成表单:只需提供表单的配置信息,React Ant Design Pro ProForm 就能自动根据配置生成表单,并且自动完成输入框、下拉菜单、日期选择等常用表单元素的渲染。
2. 表单校验:React Ant Design Pro ProForm 支持表单校验功能,只需在配置中添加相应的校验规则,即可实现表单内容的校验,并且自动提示错误信息。
3. 数据格式化:React Ant Design Pro ProForm 支持数据格式化功能,可以在表单配置中定义数据格式化的方式,以适应不同的业务需求。
4. 响应式布局:React Ant Design Pro ProForm 使用Ant Design 的Grid 布局系统,可以自由定义表单的布局方式,并且能够根据屏幕大小自动适应不同的布局。
二、如何使用React Ant Design Pro ProForm?使用React Ant Design Pro ProForm 需要先安装相应的依赖包,并且在项目中引入相关的组件和样式。
antdesignpro 标题部分添加链接
[antdesignpro](xxx1. antdesignpro简介antdesignpro是一套基于Ant Design设计语言的企业级中后台前端集成解决方案,它基于React+Ant Design。
它包括使用经典的技术栈,响应式设计,自定义主题和模块化开发等功能。
2. antdesignpro的特性2.1 基于Ant Design的设计语言antdesignpro采用了Ant Design的设计语言,使得整个界面风格简洁大方,符合当前的设计趋势。
2.2 响应式设计antdesignpro支持响应式设计,可以适配不同尺寸的屏幕,使得用户在不同终端上都能有良好的体验。
2.3 自定义主题antdesignpro支持自定义主题,用户可以根据自己的需求定制界面风格,使得界面更符合企业的品牌形象。
2.4 模块化开发antdesignpro采用了模块化开发的方式,使得代码更加清晰、易于维护和扩展。
3. antdesignpro的优势3.1 高质量antdesignpro是由Ant Design团队打造的,具有高质量的代码和文档,保证了产品的稳定性和可靠性。
3.2 社区支持antdesignpro有庞大的开发者社区支持,可以解决开发中遇到的各种问题,减少开发者的学习成本。
3.3 持续更新antdesignpro会持续更新,不断优化功能和性能,保持产品的竞争力和先进性。
4. antdesignpro的应用场景4.1 企业中后台系统antdesignpro适用于各类企业的中后台管理系统,可以满足企业对于界面设计、用户体验和功能需求的要求。
4.2 数据展示评台antdesignpro可以用于搭建数据展示评台,支持多种图表和数据展示方式,满足数据可视化的需求。
4.3 项目快速搭建antdesignpro提供了丰富的模板和组件,可以快速搭建项目骨架,减少开发周期,提高开发效率。
5. antdesignpro的发展前景随着企业信息化建设的深入,对于中后台系统的需求将逐渐增加。
antdpro创建项目
创建Ant Design Pro项目Ant Design Pro是一套基于React和Ant Design的企业级React应用程序框架。
它提供了丰富的组件和模板,能够快速构建现代化、美观的企业级应用程序。
准备工作在创建Ant Design Pro项目之前,我们需要进行一些准备工作:1.安装Node.js和npm:Ant Design Pro是基于Node.js开发的,所以需要首先安装Node.js和npm,你可以通过官网下载安装包并按照向导安装。
2.安装yarn(可选):yarn是一个比npm更快、更可靠的包管理器,如果你愿意使用yarn,可以通过npm全局安装yarn。
npm install -g yarn创建Ant Design Pro项目安装完必要的软件之后,我们可以开始创建Ant Design Pro项目了。
1.创建项目:首先,在命令行中切换到你想要创建项目的目录,并执行下面的命令来创建一个新的Ant Design Pro项目:yarn create umi这个命令会启动一个交互式的命令行工具,让你选择一些配置项。
在这个工具中,你可以选择项目类型、插件和模板等。
你可以使用键盘上下箭头来选择选项,并按Enter键进行确认。
选择项目类型:在这里我们选择Ant Design Pro,然后按Enter键进行确认。
选择模板:在这里我们选择Ant Design Pro,然后按Enter键进行确认。
选择插件:在这里你可以选择需要的插件,或者直接按Enter键跳过。
安装依赖:最后,命令行工具会自动下载和安装项目依赖。
2.启动开发服务器:完成创建项目之后,进入项目目录,并执行下面的命令来启动开发服务器:yarn start这个命令将会启动开发服务器,并在浏览器中打开一个新的页面,显示AntDesign Pro的默认模板。
你可以在这个模板的基础上进行开发,或者根据你的需求进行定制。
项目结构介绍创建Ant Design Pro项目之后,会生成一些默认的文件和目录。
AntDesignPro(中后台系统)教程
AntDesignPro(中后台系统)教程⼀、概念:(官⽅⽹站) 1、Ant Design Pro 是什么: Ant Design Pro 是⼀套开箱即⽤的中台前端/设计解决⽅案,是⼀个开发中后台系统的脚⼿架。
类似 vue-cli ⼀样,创建项⽬后,各种webpack配置、路由配置等,都已经弄好,直接开发就可以了。
2、Ant Design Pro 相关的技术栈: react+redux+dva+antd+fetch+roadhog 主要还是dva⽐较难理解,fetch 就另外⼀种 ajax⼆、安装:两种安装⽅法 扩展介绍:官⽹教程中安装⽤到了 npm create umi 命令。
npm create 命令是什么呢,create 是 install 的别名。
但是经过实践,个⼈感觉是调⽤ npx install umi,然后在调⽤git命令。
⽅法⼀:按照官⽹的步骤:npm create umi //cd create // 安装时,直接创建create 项⽬⽬录npm install// 安装依赖npm start // 启动应⽤ ⽅法⼆: npm create umi 的本质,还是调⽤ git 命令到git仓库上下载代码。
调⽤npm create umi命令后, ⾃动调⽤git clonehttps:///ant-design/ant-design-pro --depth=1 这个git命令。
所以我们可以直接调⽤git命令,⽽不⽤安装 umi。
git clone https:///ant-design/ant-design-pro --depth=1 是JavaScript模式下的仓库,typescript模式下的仓库个⼈不⽤就不去介绍了。
$ git clone --depth=1 https:///ant-design/ant-design-pro.git my-project$ cd my-project经过实践发现:还是⽅案⼀更好,会把⼀些没⽤的⽂件,清理掉的;⽅案⼆会多⼀些没⽤的⽂件出来三、部署和构建 1、环境变量: 环境变量是 ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION 2、构建和部署:阅读 a。
AntDesignPro(Reactdvaantd)
AntDesignPro(Reactdvaantd)Ant Design Pro 是⼀个企业级中后台前端/设计解决⽅案。
本地环境需要安装 node 和 git,技术栈基于 ES2015+、React、dva、g2 和 antd。
1、预备知识1)Redux 是 JavaScript 状态容器,提供可预测化的状态管理;Redux 除了和 React ⼀起⽤外,还⽀持其它界⾯库。
connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options]):连接 React 组件与 Redux store。
[mapStateToProps(state, [ownProps]): stateProps] (Function): 如果定义该参数,组件将会监听 Redux store 的变化。
任何时候,只要 Redux store 发⽣改变,mapStateToProps函数就会被调⽤。
该回调函数必须返回⼀个纯对象,这个对象会与组件的 props 合并。
函数将被调⽤两次。
第⼀次是设置参数,第⼆次是组件与 Redux store 连接:connect(mapStateToProps, mapDispatchToProps, mergeProps) (MyComponent)。
connect 函数不会修改传⼊的 React 组件,返回的是⼀个新的已与 Redux store 连接的组件,⽽且你应该使⽤这个新组件。
mapStateToProps函数接收整个 Redux store 的 state 作为 props,然后返回⼀个传⼊到组件 props 的对象。
注⼊dispatch和todosfunction mapStateToProps(state) {return { todos: state.todos }}export default connect(mapStateToProps)(TodoApp)// 注⼊ dispatch 和全局 stateexport default connect(state => state)(TodoApp)// 不要这样做!这会导致每次 action 都触发整个 TodoApp 重新渲染// 最好在多个组件上使⽤ connect(),每个组件只监听它所关联的部分 state。
antdesignpro配置路由显示页面步骤详解
antdesignpro配置路由显⽰页⾯步骤详解第⼀步在 src/views 下新建页⾯的vue⽂件,如果相关页⾯有多个,可以新建⼀个⽂件夹来放置相关⽂件。
给页⾯⾥写⼏个字,等会可以看到哦~~第⼆步将⽂件加⼊菜单和路由进⼊这个⽂件 src\config\router.config.js// eslint-disable-next-lineimport { UserLayout, BasicLayout, RouteView, BlankLayout, PageView } from '@/layouts'import { bxAnaalyse } from '@/core/icons'export const asyncRouterMap = [{path: '/',name: 'index',component: BasicLayout,meta: { title: '⾸页' },redirect: '/dashboard/workplace',children: [// dashboard{path: 'dashboard',name: 'dashboard',redirect: '/dashboard/workplace',component: RouteView,meta: { title: '仪表盘', keepAlive: true, icon: bxAnaalyse, permission: [ 'dashboard' ] },children: [{path: 'analysis/:pageNo([1-9]\\d*)?',name: 'Analysis',component: () => import('@/views/dashboard/Analysis'),meta: { title: '分析页', keepAlive: false, permission: [ 'dashboard' ] }},// 外部链接{path: 'https:///',name: 'Monitor',meta: { title: '监控页(外部)', target: '_blank' }},{path: 'workplace',name: 'Workplace',component: () => import('@/views/dashboard/Workplace'),meta: { title: '⼯作台', keepAlive: true, permission: [ 'dashboard' ] }},{path: 'test-work',name: 'TestWork',component: () => import('@/views/dashboard/TestWork'),meta: { title: '测试功能', keepAlive: true, permission: [ 'dashboard' ] }}]},// forms{path: '/form',redirect: '/form/base-form',component: PageView,meta: { title: '表单页', icon: 'form', permission: [ 'form' ] },children: [{path: '/form/base-form',name: 'BaseForm',component: () => import('@/views/form/BasicForm'),meta: { title: '基础表单', keepAlive: true, permission: [ 'form' ] }},{path: '/form/step-form',name: 'StepForm',component: () => import('@/views/form/stepForm/StepForm'),meta: { title: '分步表单', keepAlive: true, permission: [ 'form' ] }},{path: '/form/advanced-form',name: 'AdvanceForm',component: () => import('@/views/form/advancedForm/AdvancedForm'), meta: { title: '⾼级表单', keepAlive: true, permission: [ 'form' ] }}]},// list{path: '/list',name: 'list',component: PageView,redirect: '/list/table-list',meta: { title: '列表页', icon: 'table', permission: [ 'table' ] },children: [{path: '/list/table-list/:pageNo([1-9]\\d*)?',name: 'TableListWrapper',hideChildrenInMenu: true, // 强制显⽰ MenuItem ⽽不是 SubMenucomponent: () => import('@/views/list/TableList'),meta: { title: '查询表格', keepAlive: true, permission: [ 'table' ] }},{path: '/list/basic-list',name: 'BasicList',component: () => import('@/views/list/StandardList'),meta: { title: '标准列表', keepAlive: true, permission: [ 'table' ] }},{path: '/list/card',name: 'CardList',component: () => import('@/views/list/CardList'),meta: { title: '卡⽚列表', keepAlive: true, permission: [ 'table' ] }},{path: '/list/search',name: 'SearchList',component: () => import('@/views/list/search/SearchLayout'),redirect: '/list/search/article',meta: { title: '搜索列表', keepAlive: true, permission: [ 'table' ] },children: [{path: '/list/search/article',name: 'SearchArticles',component: () => import('../views/list/search/Article'),meta: { title: '搜索列表(⽂章)', permission: [ 'table' ] }},{path: '/list/search/project',name: 'SearchProjects',component: () => import('../views/list/search/Projects'),meta: { title: '搜索列表(项⽬)', permission: [ 'table' ] }},{path: '/list/search/application',name: 'SearchApplications',component: () => import('../views/list/search/Applications'),meta: { title: '搜索列表(应⽤)', permission: [ 'table' ] }}]}]},// profile{path: '/profile',name: 'profile',component: RouteView,redirect: '/profile/basic',meta: { title: '详情页', icon: 'profile', permission: [ 'profile' ] },children: [{path: '/profile/basic',name: 'ProfileBasic',component: () => import('@/views/profile/basic/Index'),meta: { title: '基础详情页', permission: [ 'profile' ] }},{path: '/profile/advanced',name: 'ProfileAdvanced',component: () => import('@/views/profile/advanced/Advanced'),meta: { title: '⾼级详情页', permission: [ 'profile' ] }}]},// result{path: '/result',name: 'result',component: PageView,redirect: '/result/success',meta: { title: '结果页', icon: 'check-circle-o', permission: [ 'result' ] },children: [{path: '/result/success',name: 'ResultSuccess',component: () => import(/* webpackChunkName: "result" */ '@/views/result/Success'), meta: { title: '成功', keepAlive: false, hiddenHeaderContent: true, permission: [ 'result' ] } },{path: '/result/fail',name: 'ResultFail',component: () => import(/* webpackChunkName: "result" */ '@/views/result/Error'),meta: { title: '失败', keepAlive: false, hiddenHeaderContent: true, permission: [ 'result' ] } }]},// Exception{path: '/exception',name: 'exception',component: RouteView,redirect: '/exception/403',meta: { title: '异常页', icon: 'warning', permission: [ 'exception' ] },children: [{path: '/exception/403',name: 'Exception403',component: () => import(/* webpackChunkName: "fail" */ '@/views/exception/403'),meta: { title: '403', permission: [ 'exception' ] }},{path: '/exception/404',name: 'Exception404',component: () => import(/* webpackChunkName: "fail" */ '@/views/exception/404'),meta: { title: '404', permission: [ 'exception' ] }},{path: '/exception/500',name: 'Exception500',component: () => import(/* webpackChunkName: "fail" */ '@/views/exception/500'),meta: { title: '500', permission: [ 'exception' ] }}]},// account{path: '/account',component: RouteView,redirect: '/account/center',name: 'account',meta: { title: '个⼈页', icon: 'user', keepAlive: true, permission: [ 'user' ] },children: [{path: '/account/center',name: 'center',component: () => import('@/views/account/center/Index'),meta: { title: '个⼈中⼼', keepAlive: true, permission: [ 'user' ] }},{path: '/account/settings',name: 'settings',component: () => import('@/views/account/settings/Index'),meta: { title: '个⼈设置', hideHeader: true, permission: [ 'user' ] },redirect: '/account/settings/base',hideChildrenInMenu: true,children: [{path: '/account/settings/base',name: 'BaseSettings',component: () => import('@/views/account/settings/BaseSetting'),meta: { title: '基本设置', hidden: true, permission: [ 'user' ] }},{path: '/account/settings/security',name: 'SecuritySettings',component: () => import('@/views/account/settings/Security'),meta: { title: '安全设置', hidden: true, keepAlive: true, permission: [ 'user' ] }},{path: '/account/settings/custom',name: 'CustomSettings',component: () => import('@/views/account/settings/Custom'),meta: { title: '个性化设置', hidden: true, keepAlive: true, permission: [ 'user' ] } },{path: '/account/settings/binding',name: 'BindingSettings',component: () => import('@/views/account/settings/Binding'),meta: { title: '账户绑定', hidden: true, keepAlive: true, permission: [ 'user' ] }},{path: '/account/settings/notification',name: 'NotificationSettings',component: () => import('@/views/account/settings/Notification'),meta: { title: '新消息通知', hidden: true, keepAlive: true, permission: [ 'user' ] } }]}]},// other{path: '/other',name: 'otherPage',component: PageView,meta: { title: '其他组件', icon: 'slack', permission: [ 'dashboard' ] },redirect: '/other/icon-selector',children: [{path: '/other/icon-selector',name: 'TestIconSelect',component: () => import('@/views/other/IconSelectorView'),meta: { title: 'IconSelector', icon: 'tool', keepAlive: true, permission: [ 'dashboard' ] } },{path: '/other/list',component: RouteView,meta: { title: '业务布局', icon: 'layout', permission: [ 'support' ] },redirect: '/other/list/tree-list',children: [{path: '/other/list/tree-list',name: 'TreeList',component: () => import('@/views/other/TreeList'),meta: { title: '树⽬录表格', keepAlive: true }},{path: '/other/list/edit-table',name: 'EditList',component: () => import('@/views/other/TableInnerEditList'),meta: { title: '内联编辑表格', keepAlive: true }},{path: '/other/list/user-list',name: 'UserList',component: () => import('@/views/other/UserList'),meta: { title: '⽤户列表', keepAlive: true }},{path: '/other/list/role-list',name: 'RoleList',component: () => import('@/views/other/RoleList'),meta: { title: '⾓⾊列表', keepAlive: true }},{path: '/other/list/system-role',name: 'SystemRole',component: () => import('@/views/role/RoleList'),meta: { title: '⾓⾊列表2', keepAlive: true }},{path: '/other/list/permission-list',name: 'PermissionList',component: () => import('@/views/other/PermissionList'),meta: { title: '权限列表', keepAlive: true }}]}]},// new path{path: '/particle',name: 'particlePage',component: RouteView,meta: { title: '测试页⾯组件', icon: 'slack', permission: [ 'dashboard' ] },redirect: '/particle/list',children: [{path: '/particle/list',name: 'particlePage',component: () => import('@/views/particle-monitoring/particleList'),meta: { title: '测试页⾯组件⾴', icon: 'tool', keepAlive: true, permission: [ 'dashboard' ] } }]}]},{path: '*', redirect: '/404', hidden: true}]/*** 基础路由* @type { *[] }*/export const constantRouterMap = [{path: '/user',component: UserLayout,redirect: '/user/login',hidden: true,children: [{path: 'login',name: 'login',component: () => import(/* webpackChunkName: "user" */ '@/views/user/Login')},{path: 'register',name: 'register',component: () => import(/* webpackChunkName: "user" */ '@/views/user/Register')},{path: 'register-result',name: 'registerResult',component: () => import(/* webpackChunkName: "user" */ '@/views/user/RegisterResult') },{path: 'recover',name: 'recover',component: undefined}]},{path: '/test',component: BlankLayout,redirect: '/test/home',children: [{path: 'home',name: 'TestHome',component: () => import('@/views/Home')}]},{path: '/404',component: () => import(/* webpackChunkName: "fail" */ '@/views/exception/404')}// 寫到這裡的話,就是整個⾴⾯覆蓋掉原有的⾴⾯了,沒有左側列表哦// ,// {// path: '/particle',// component: BlankLayout,// redirect: '/particle/list',// children: [// {// path: 'list',// name: 'particlePage',// component: () => import('@/views/particle-monitoring/particleList') // }// ]// }]然后你就可以看到组件页⾯了组件页⾯使⽤⾯包屑⽅法如下<template><page-view :title="title"><div><h1>hahahaha</h1><a-table :columns="columns" :dataSource="data" bordered><template slot="name" slot-scope="text"><a href="javascript:;">{{ text }}</a></template></a-table></div></page-view></template><script>import { PageView } from '@/layouts'// In the fifth row, other columns are merged into first column// by setting it's colSpan to be 0const renderContent = (value, row, index) => {const obj = {children: value,attrs: {}}if (index === 4) {obj.attrs.colSpan = 0}return obj}const data = [{key: '1',name: 'John Brown',age: 32,tel: '0571-********',phone: 188********,address: 'New York No. 1 Lake Park'},{key: '2',name: 'Jim Green',tel: '0571-********',phone: 188********,age: 42,address: 'London No. 1 Lake Park'},{key: '3',name: 'Joe Black',age: 32,tel: '0575-********',phone: 189********,address: 'Sidney No. 1 Lake Park'},{key: '4',name: 'Jim Red',age: 18,tel: '0575-********',phone: 189********,address: 'London No. 2 Lake Park'},{key: '5',name: 'Jake White',age: 18,tel: '0575-********',phone: 189********,address: 'Dublin No. 2 Lake Park'}]export default {name: 'particleList',components: {PageView},data () {const columns = [{title: 'Name',dataIndex: 'name',customRender: (text, row, index) => {if (index < 4) {return <a href="javascript:;">{text}</a>}return {children: <a href="javascript:;">{text}</a>, attrs: {colSpan: 5}}}},{title: 'Age',dataIndex: 'age',customRender: renderContent},{title: 'Home phone',colSpan: 2,dataIndex: 'tel',customRender: (value, row, index) => {const obj = {children: value,attrs: {}}if (index === 2) {obj.attrs.rowSpan = 2}// These two are merged into above cellif (index === 3) {obj.attrs.rowSpan = 0}if (index === 4) {obj.attrs.colSpan = 0}return obj}},{title: 'Phone',colSpan: 0,dataIndex: 'phone',customRender: renderContent},{title: 'Address',dataIndex: 'address',customRender: renderContent}]return {data,columns}}}</script>ok 完毕~~~~。
antdesignpro当中改变antdesign组件的样式和数据管理
antdesignpro当中改变antdesign组件的样式和数据管理ant design pro 简介官⽹简介Ant Design Pro 是⼀个企业级中后台前端/设计解决⽅案,我们秉承的设计价值观,致⼒于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源,进⼀步提升企业级中后台产品设计研发过程中的『⽤户』和『设计者』的体验。
随着『设计者』的不断反馈,我们将持续迭代,逐步沉淀和总结出更多设计模式和相应的代码实现,阐述中后台产品模板/组件/业务场景的最佳实践,也⼗分期待你的参与和共建。
我的理解ant design pro 是快速搭建web端的后台管理信息系统的框架,在其中,我们可以使⽤ant design 这个ui 库,也可以使⽤框架中提供的很多页⾯,⾥⾯也存在图表等⼀些组件,让我们不必要画更多时间去学习echart,highchart,这种图表插件。
可能有⼈会存在疑问,我们通过css来改变ui库的原始css属性没那么容易。
ant design pro 提供了⼀种less写法,我们可以给我们所使⽤的组件绑定⼀个class的名字,然后确定element当中我们需要改变样式的元素类名,然后通过嵌套选中的形式,就可以改变我们想改变的元素样式。
第⼀个问题:改变ant design 的原始样式less ⽂件.and_collapse_list{td[class='ant-table-row-cell-break-word']{position: relative;line-height: 20px;}}jsx⽂件// 1. 引⼊我们要使⽤的lessimport style from "./collapselist.less"<Table columns={columns} dataSource={iOSList} bordered className={style.and_collapse_list} />在这⾥,我给Table 绑定了 and_collapse_list 这个类名,然后通过 td[class='ant-table-row-cell-break-word'] 标签名字+ class 的⽅式确定⼀个元素,改变他的样式。
antdesignpro(三)路由和菜单
antdesignpro(三)路由和菜单⼀、概述⼆、原⽂摘要 路由和菜单是组织起⼀个应⽤的关键⾻架,我们的脚⼿架提供了⼀些基本的⼯具及模板,帮助你更⽅便的搭建⾃⼰的路由/菜单。
如果你想了解更多关于browserHistory和hashHistory,请参看。
注意:我们的脚⼿架依赖dva@2,路由⽅⾯是基于react-router@4的实现,在写法以及 API 上与之前的版本有较⼤不同,所以,在开始前你需要具备⼀些相关的基础知识。
这⾥给出⼏篇关键⽂档:2.1、基本结构脚⼿架通过结合⼀些配置⽂件、基本算法及⼯具函数,搭建好了路由和菜单的基本框架,主要涉及以下⼏个模块/功能:路由⽣成结合路由信息的配置⽂件和预设的基本算法,提供了在不同层级⽂件中⾃动⽣成路由列表的能⼒。
菜单⽣成由确定数据结构的菜单配置⽂件⽣成,其中的菜单项名称,嵌套路径与路由有⼀定关联关系。
⾯包屑组件中内置的⾯包屑也可由脚⼿架提供的配置信息⾃动⽣成。
简单介绍下各个模块的基本思路。
2.1.1、路由⽬前在脚⼿架中,除了,其余路由列表都是⾃动⽣成,其中最关键的就是中⼼化配置⽂件src/common/router.js,它的主要作⽤有两个:配置路由相关信息。
如果只考虑⽣成路由,你只需要指定每条配置的路径及对应渲染组件。
输出路由数据,并将路由数据(routerData)挂载到每条路由对应的组件上。
这样我们得到⼀个基本的路由信息对象,它的结构⼤致是这样:{'/dashboard/analysis': {component: DynamicComponent(),name: '分析页',},'/dashboard/monitor': {component: DynamicComponent(),name: '监控页',},'/dashboard/workplace': {component: DynamicComponent(),name: '⼯作台',},}为了帮助⾃动⽣成路由,在src/utils/utils.js中提供了⼯具函数 getRoutes,它接收两个参数:当前路由的路径及路由信息 routerData,主要完成两个⼯作:筛选路由信息,筛选的算法为只保留当前 match.path 下最邻近的路由层级(更深⼊的层级留到嵌套路由中⾃⾏渲染),举个例⼦(每条为⼀个 route path):// 当前 match.path 为 //a // 没有更近的层级,保留/a/b // 存在更近层级 /a,去掉/c/d // 没有更近的层级,保留/c/e // 没有更近的层级,保留/c/e/f // 存在更近层级 /c/e,去掉⾃动分析路由参数,除了下⾯还有嵌套路由的路径,其余路径默认设为 exact。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AntDesignPro开发手册修订历史记录目录1.前言1.1目的让不熟悉Ant Design Pro 的开发人员快速掌握开发方式1.2概述Ant Design Pro是一个前端设计解决方案,由蚂蚁金服体验技术部出品/维护。
核心技术组成:✧ES2015+ JavaScript语言的新标准✧React 用于构建用户界面的JAVASCRIPT 库✧dva 是基于(redux(状态管理)+ react-router(路由库)+ redux-saga(异步中间件)等)的一层轻量封装✧g2 一套基于可视化编码的图形语法✧antd React组件2.开发环境2.1 Node.js 安装配置Node.js安装包及源码下载地址为:https:///en/download/2.2安装方式2.2.1直接clone git 仓库git clone --depth=1 https:///ant-design/ant-design-pro.git my-projectcd my-project2.2.2使用集成化的命令行工具ant-design-pro-cli。
npm install ant-design-pro-cli -g #安装脚手架mkdir my-projectcd my-projectpro new # 创建一个新项目2.3 目录结构├──mock # 本地模拟数据├──public # 公共资源│└──favicon.ico # 网站图标├──src│├──assets # 本地静态资源│├──common # 应用公用配置,如导航信息│├──components # 业务通用组件│├──e2e # 集成测试用例│├──layouts # 通用布局│├──models # 数据交互│├──routes # 业务页面入口和常用模板│├──services # 后台接口服务│├──utils # 工具库│├──g2.js # 可视化图形配置│├──theme.js # 主题配置│├──index.ejs # HTML 入口模板│├──index.js # 应用入口│├──index.less # 全局样式│└──router.js # 路由入口├──tests # 测试工具├──README.md # 项目说明└──package.json # 项目配置文件2.4 项目初始化2.4.1安装依赖npm install2.4.2启动应用npm start2.4.3打包npm run build该命令会生成*.js、*.css、index.html 等静态文件3.开发指导3.1开发规范3.2 开发流程示意图3.3 开发实例3.3.1 新建一个菜单3.3.1.1编辑菜单配置文件src/common/menu.js,在menuData里添加菜单配置,数据格式为json 格式,详细配置请参照下图3.3.2 新建一个路由配置3.3.2.1路由配置文件src/common/router.js,在routerConfig里添加路由配置,数据格式为json 格式,详细配置请参照下图3.3.3 新建一个路由页面3.3.3.1页面元素文件src/routes/HostOperation/HostMonitor.jsimport React, { PureComponent, Fragment } from'react';import { connect } from'dva';import { Row, Col, Card, Form, Input, Select, Icon, Button, Dropdown, Menu, InputNumber, DatePicker, Modal, message, Badge, Divider, Steps, Radio } from'antd'; import StandardTable from'../../components/StandardTable';import PageHeaderLayout from'../../layouts/PageHeaderLayout';import styles from'./HostMonitor.less';const FormItem = Form.Item;const getValue=obj=>Object.keys(obj).map(key=> obj[key]).join(',');// 和'hostMonitor'建立连接,进行页面的数据交互@connect(({ hostMonitor,loading }) => ({hostMonitor,loading: loading.effects['hostMonitor/getMonitorList'] }))// 创建form对象,固定写法@Form.create()export default class HostMonitor extends PureComponent { state = {modalVisible: false,updateModalVisible: false,expandForm: false,selectedRows: [],formValues: {},stepFormValues: {},};// 渲染页面完成后执行componentDidMount() {const { dispatch } =this.props;dispatch({type: 'hostMonitor/getMonitorList',});}//表格表头定义columns = [{title: '触发器',dataIndex: 'description',},{title: '主机名称',dataIndex: 'name',},{title: '主机IP',dataIndex: 'host_ip',},{title: '系统运行时间',dataIndex: 't',},{title: '操作系统',dataIndex: 'host_group.os',},{title: '所属系统',dataIndex: 'host_group.system',},{title: '网络区域',dataIndex: 'host_',}];// 表格发生操作时执行函数handleStandardTableChange= (pagination, filtersArg, sorter) => { const { dispatch } =this.props;const { formValues } =this.state;const filters =Object.keys(filtersArg).reduce((obj, key) => { const newObj = { ...obj };newObj[key] =getValue(filtersArg[key]);return newObj;}, {});var params = {currentPage: pagination.current,pageSize: pagination.pageSize,};if (sorter.field) {params.sorter =`${sorter.field}_${sorter.order}`;}dispatch({type: 'hostMonitor/getMonitorList',payload: params,});}// 操作重置按钮时执行函数handleFormReset= () => {const { form, dispatch } =this.props;form.resetFields();this.setState({formValues: {},});dispatch({type: 'hostMonitor/getMonitorList',payload: {},});}// 查询条件展开/收起toggleForm= () => {this.setState({expandForm: !this.state.expandForm,});}// 选择行handleSelectRows= (rows) => {this.setState({selectedRows: rows,});}// 操作查询按钮handleSearch= (e) => {e.preventDefault();const { dispatch, form } =this.props;form.validateFields((err, fieldsValue) => {if (err) return;const values = {...fieldsValue,updatedAt: fieldsValue.updatedAt && fieldsValue.updatedAt.valueOf(), };this.setState({formValues: values,});dispatch({type: 'hostMonitor/getMonitorList',payload: values,});});}//显示/隐藏模态窗口 !!flag:将flag强转为布尔类型handleModalVisible= (flag) => {this.setState({modalVisible: !!flag,});}//显示/隐藏模态窗口handleUpdateModalVisible= (flag, record) => {this.setState({updateModalVisible: !!flag,stepFormValues: record || {},});}// 查询条件表单renderSimpleForm() {const { getFieldDecorator } =this.props.form;return (<Form onSubmit={this.handleSearch}layout="inline"><Row gutter={{ md: 8, lg: 24, xl: 48 }}><Col md={8}sm={24}><FormItem label="主机IP">{getFieldDecorator('hostIp')(<Input placeholder="请输入IP地址" />)}</FormItem></Col><Col md={8}sm={24}><span className={styles.submitButtons}><Button type="primary"htmlType="submit">查询</Button><Button style={{ marginLeft: 8 }}onClick={this.handleFormReset}>重置</Button></span></Col></Row></Form>);}//选择默认的查询条件表单renderForm() {return this.renderSimpleForm();}//渲染页面render() {const { hostMonitor:{data} ,loading } =this.props;const newdata = data?data:{list: [],pagination: {},};const { selectedRows, modalVisible, updateModalVisible, stepFormValues } =this.state;return (<PageHeaderLayout title="主机监控列表"><Card bordered={false}><div className={styles.tableList}><div className={styles.tableListForm}>{this.renderForm()}</div><StandardTableselectedRows={selectedRows}loading={loading}data={newdata}columns={this.columns}onSelectRow={this.handleSelectRows}onChange={this.handleStandardTableChange}/></div></Card></PageHeaderLayout>);}}3.3.3.2 页面样式文件src/routes/HostOperation/HostMonitor.less3.3.4 新建一个数据模型3.3.4.1新建model文件:src\models\hostMonitor.jsimport { getMonitorList } from'../services/trans';export default {// model命名空间,唯一的namespace: 'hostMonitor',// 初始化状态数据state: {data: {list: [],pagination: {},},},// 定义发送请求的功能方法effects: {*getMonitorList({ payload }, { call, put }) {const response =yield call(getMonitorList, payload);const resp = response?response:{};yield put({type: 'queryList',payload: resp ? resp : {},});}},// 更新页面状态及数据reducers: {queryList(state, action) {return {...state,data: action.payload.data,};},},};3.3.5 新建一个模拟请求数据返回3.3.5.1新建service文件:src\services\trans.jsimport { stringify } from'qs';import request from'../utils/request';/*** 获取主机列表数据* @param{*}params*///这里定义的方法是由model调用的export async function getMonitorList(params) {console.error('getMonitorList.....');console.error(params);// 这里的地址是一个模拟地址,在.roadhogrc.mock.js里定义,数据会返回model return request('/trans/operation/monitor?${stringify(params)}', { method: 'POST',}'POST /trans/operation/monitor': (req, res) => {res.send({status: 'ok',data: getMonitorList});},export const getMonitorList = {list: dataSource,pagination: {total: dataSource.length,pageSize: 10,current: 1}}export default {getMonitorList};3.3.6 新建一个真实请求数据返回3.3.6.1新建service文件:src\services\trans.jsimport { stringify } from'qs';import request from'../utils/request';/*** 获取主机列表数据* @param{*}params*///这里定义的方法是由model调用的export async function getMonitorList(params) {console.error('getMonitorList.....');console.error(params);// 这里的地址是一个真实地址,数据会返回modelreturn request('http://127.0.0.1:3000/get_monitor_list', { method: 'POST',}3.4 编码规范5.在线资源5.1官方文档:5.1.1 AngDesignPro 代码地址https:///ant-design/ant-design-pro5.1.2 AngDesignPro 文档https://pro.ant.design/docs/getting-started-cn5.1.3 AngDesignPro 在线问题讨论https:///ant-design/ant-design-pro/issues 5.1.4 AngDesign 在线文档https://ant.design/5.1.5国内镜像站点http://ant-design-pro.gitee.io/index-cnhttp://ant-design.gitee.io/docs/react/introduce-cn 5.2在线预览:https://preview.pro.ant.design/#/dashboard/analysis6.需要完善的功能6.1 用户登录信息6.2 动态菜单和路由...。