ant design pro 简介

官网简介

链接 https://pro.ant.design/docs/getting-started-cn
项目结构 https://github.com/ant-design/ant-design-pro

Ant Design Pro 是一个企业级中后台前端/设计解决方案,我们秉承 Ant Design 的设计价值观,致力于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源,进一步提升企业级中后台产品设计研发过程中的『用户』和『设计者』的体验。随着『设计者』的不断反馈,我们将持续迭代,逐步沉淀和总结出更多设计模式和相应的代码实现,阐述中后台产品模板/组件/业务场景的最佳实践,也十分期待你的参与和共建。

我的理解

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. 引入我们要使用的less
import 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 的方式 确定一个元素,改变他的样式。

第二个问题 ant design pro 当中数据管理的方式

在pro项目当中,存在一个封装好的请求方式"umi-request"

umi-request链接:https://github.com/umijs/umi-request

我们可以在这个基础方进行二次封装,也可以直接使用他发起异步请求

一般我们数据维护需要三个文件

  • 存放数据请求的js 可以叫api.js
  • 数据管理的js 可以叫model.js
  • 视图容器jsx 这个就是你的页面,通过他发起请求,渲染数据
  • 引入我们新建的model dva.js 里面 app.model({ namespace: '命令空间', ...(require('路径').default) });

话不多说直接上代码

api.js

// 这里用到的是我们二次封装好的request.js
import request from '@/utils/request'; // 这里导出一个async 或者 普通函数都不影响
export async function getA(newData) {
return request("/a",{
method: "post",
headers: {},
data: newData
})
} export async function getB(newData) {
return request("/b",{
method: "post",
headers: {},
data: newData
})
}

model.js

import {getA,getB} from 'api.js'
const CollapseModel = {
// 这里是每一个model的命名空间,是唯一的。
namespace : "collapse",
// 这里就是仓库里面的值
state : {
AndInfo:{},
IosInfo:{}
},
// 这里存放异步方法
effects : {
// * 是es6当中generetor 生成器函数
// {payload,callback} 这里是传递过来的参数 用到了解构赋值
// call 是用来调用异步方法的,如果你想在jsx当中使用异步请求回来的值需要使用这个回掉函数。
// put 是用来调用reducer当中的同步的方法
*getA({payload,callback},{call,put}) { let {newData} = payload
const data = yield call(getA,newData)
if(callback){
// 把data传递给我们的callback,让我们jsx当中对的callback可以使用它
callback(data)
}
},
*getB({payload,callback},{call,put}) {
let {newData} = payload
const data = yield call(getB,newData)
if(callback){
callback(data)
}
},
},
// reducer 是一个纯函数 这个可以去百度了解一下。同样的输入换取同样的输出
// 如果对概念不理解,那么就可以仿照我的写法。记住不可以直接改变state
reducers: {
saveA(state,{payload}) {
let newState = JSON.parse(JSON.stringify(state))
newState.IosInfo =payload.data
console.log(newState)
return newState
}
},
}
export default CollapseModel

jsx 我们的页面

// 必须引入这个高阶函数,把我们的组件和model联系起来,如果熟悉redux的话,实际就是在我们的组件外层包裹了Provider 并且提供了一个store。让仓库的数据穿透我们的组件
// 高阶函数就是将函数作为参数传递给另一个函数
import { connect } from 'dva';
// 这是一个修饰器写法 实际是通过connect函数把我们的组件传递进去,并且返回一个新的组件
// 第一个参数是mapstate 是对传递过来的值进行处理,类似vue中的计算属性,第二个参数就是组件
// 比如在这里我要使用 model 文件中 state 里面的 AndInfo
@connect((collapse) => ({
AndInfo:collapse.AndInfo
})) //使用这个值 是通过this.props获取的
componentDidMount() {
const {AndInfo,dispatch} = this.props
// 调用model 里面的方法 必须通过dispatch
dispatch({
type:"collapse/getA",
payload:{
newData:{a:"123"}
},
// 因为我们把一个函数当作一个变量进行传递所以在这个过程当中一定需要绑定this
callback:this.callbackA.bind(this)
})
} callbackA = (res) =>{
... }

ant design pro 当中改变ant design 组件的样式和 数据管理的更多相关文章

  1. react使用ant design pro时的滑动图片组件

    react的滑动图片验证,是基于https://segmentfault.com/a/1190000018309458?utm_source=tag-newest做的修改,改动的主要有以下几点: 1. ...

  2. 轻松玩转Ant Design Pro一

    ant design pro来源于ant design,其是一段自带样式的react组件,用于企业后台的漂亮的,可控的组件.ant design有很多组件和样式,不可能所有都记住,我们只要记住常用的, ...

  3. 测试平台系列(5) 引入Ant Design Pro

    引入Ant Design Pro 回顾 还是继续回顾下之前的作业, 返回的中文变成了ascii字符,不要紧,我们光荣地百度一哈. 随便点进去看看,都可以找到正确答案: 可以看到,我们需要修改confi ...

  4. ant design pro (七)和服务端进行交互

    一.概述 原文地址:https://pro.ant.design/docs/server-cn Ant Design Pro 是一套基于 React 技术栈的单页面应用,我们提供的是前端代码和本地模拟 ...

  5. ant design pro (六)样式

    一.概述 参看地址:https://pro.ant.design/docs/style-cn 基础的 CSS 知识或查阅属性,可以参考 MDN文档. 二.详细介绍 2.1.less Ant Desig ...

  6. 初探ant design pro

    1.增加路由子页面&配置菜单 因为ant design pro采取的是umi路由配置,所以只要在对应的文件夹下新建相关的文件夹以及文件,它会自动解析.按照如下的步骤做即可 PS.如果想要给菜单 ...

  7. 使用ant design pro搭建项目

    脚手架搭建 git clone --depth=1 https://github.com/ant-design/ant-design-pro.git my-project 然后 cd my-proje ...

  8. Ant Design Pro 脚手架+umiJS 实践总结

    一.简介 1.Ant Design Pro Ant Design Pro是一款搭建中后台管理控制台的脚手架 ,基于React,dva.js,Ant Design (1)其中dva主要是控制数据流向,是 ...

  9. ant design pro超详细入门教程

    1.Ant Design Pro 初了解 说到ant design pro,得先了解一下ant design是个什么东西?ant design蚂蚁金服基于react打造的一个服务于企业级产品的UI框架 ...

随机推荐

  1. 使用wrk进行http压力测试

    Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 最近做了一些服务器的工作,在做htt ...

  2. Kubernetes内部域名解析的那些事儿

    前言 在kubernets环境中,服务发现大都是基于内部域名的方式.那么就涉及到内部域名的解析.从1.11版本开始,kubeadm已经使用第三方的CoreDNS替换官方的kubedns作为集群内部域名 ...

  3. Python抽象类以及元类

    抽象基类: 继承的约束与协议 __doc__ = """ 抽象基类: 继承的约束与协议 # 抽象基类 --- 有点java的味道,也有点golang的味道,继承,协议,接 ...

  4. 面试官:说说Redis的Hash底层 我:......(来自阅文的面试题)

    redis源码分析系列文章 [Redis源码系列]在Liunx安装和常见API 为什么要从Redis源码分析 String底层实现——动态字符串SDS Redis的双向链表一文全知道 前言 hello ...

  5. @Component、@Service、@Controller、@Rrepository说明

    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1       Spring容 ...

  6. 2020/06/05 JavaScript高级程序设计 函数表达式

    函数表达式 函数定义的两种方式: 函数声明(函数声明提升,非标准name属性可访问给函数指定的名字) 函数声明提升:执行代码前先读取函数声明 function functionName(arg0, a ...

  7. ODEINT 求解常微分方程(4)

    import numpy as np from scipy.integrate import odeint import matplotlib.pyplot as plt # function tha ...

  8. 1.Redis Lock

    使用场景 同步锁,让业务方法在锁设定的时间内是同步执行的 redisService.setIfAbsent redisService.expire @PostMapping("/update ...

  9. @atcoder - AGC008E@ Next or Nextnext

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个长度为 N 的序列 a,问有多少排列 p,满足对于每一个 ...

  10. SSH免密登录详解

    SSH免密登录详解 SSH(Security Shell)安全外壳协议,是较为可靠的,专为远程登录会话和其他网络服务提供安全保证的协议. ​ 对于传统的网络服务程序(例如,FTP,Telnet等)来说 ...