03 基于umi搭建React快速开发框架(封装列表增删改查)
前言
大家在做业务系统的时候,很多地方都是列表增删改查,做这些功能占据了大家很长时间,如果我们有类似的业务,半个小时就能做出一套那是不是很爽呢。
这样我们就可以有更多的时间学习一些新的东西。我们这套框架对此做了下封装,适合的小伙伴也可以借鉴封装到自己的框架当中去。核心思想用的React
高阶组件解耦,接下来我们看看怎么用。
基础用法
- 导入我们的业务组件
```
import { BTable } from 'bcomponents';
```
写好我们的页面模板。调用
BTable
的高阶组件BTable.tableEffectHoc
,传入url和columns参数就可以了,是不是很简单@BTable.tableEffectHoc({
url: '/api/table/list', //url 参数
columns: columns // table columns 参数
})
class BasicTable extends React.Component {
render() {
return (
<div style={{marginBottom: '20px'}}>
基础 Table
</div>
);
}
} export default BasicTable;查看演示
完整的一套增删改查
创建list.js, 来配置和增强我们的table,注意我们需要使用Btable。
import { BTable } from 'bcomponents'; class List extends React.Component { render() {
return (
<React.Fragment>
<BTable
columns={columns}
{...this.props}
/>
</React.Fragment>
);
}
} export default List;
写我们的页面模板,完成创建和查询的操作。我们这次用了
BTable.Search
和BTabLe.Create
来快速完成我们的查询和创建import { BTable } from 'bcomponents';
import { Row, Col, Input, Form } from 'antd';
import ListTable from './_components/list'; const Search = BTable.Search;
const Create = BTable.Create;
const FormItem = Form.Item; @BTable.tableEffectHoc({
url: '/api/table/list',
BTable: ListTable,
})
class BasicTable extends React.Component { render() {
const {getData} = this.props;
return (
<React.Fragment>
<Row justify='space-between' style={{ marginBottom: '20px' }}>
<Col span={12}>
<Search getData={getData} />
</Col>
<Col span={12} style={{textAlign: 'right'}}>
<Create
url='/api/table'
getData={getData}
>
{
({getFieldDecorator}) => (
<React.Fragment>
<FormItem {...formItemLayout} label="名称">
{getFieldDecorator('name', {
initialValue: '',
validateFirst: true,
rules: [
formValid.require(),
formValid.name(),
],
})(
<Input placeholder="请输入渠道" />
)}
</FormItem>
</React.Fragment>
)
}
</Create>
</Col>
</Row>
</React.Fragment>
);
}
} export default BasicTable;
这里的
BTable.Search
很简单,我们只需传入getData属性方法就可以完成查询操作。
创建其实也很简单,配置BTable.Create
的url和getData参数。然后只需在组件内写我们的Form表单项就可以了,是不是很简单。
至此。我们的创建和查询就完成了添加编辑功能。编辑和删除的操作在列表上,所以我们需要在
list.js
当中去完成.添加BTable.Update
模板<Update
visible={visible}
url={`/api/table/${updateData.id}`}
onCancel={this.onUpdateCancel}
getData={this.props.getData}
>
{
({getFieldDecorator}) => (
<React.Fragment>
<FormItem {...formItemLayout} label="名称">
{getFieldDecorator('name', {
initialValue: updateData.name,
validateFirst: true,
rules: [
formValid.require(),
formValid.name(),
],
})(
<Input placeholder="请输入渠道" />
)}
</FormItem>
</React.Fragment>
)
}
</Update>
配置项也很简单,配置url,visible和getData就可以了,接着完善我们的FormItem就可以了。是不是很简单
添加删除功能
BTable.Del({
url: `/api/table/${data.id}`,
getData,
})
这是最简单的了,传一个url和getData就完成了。
查看演示
关于
线上演示地址:http://39.105.188.65:8080/system/channel
目前我正在开发一个头条的开源项目。可以用此地址查看,这个是用的真实的数据
结束语
表格的增删改查封装已经完成, 代码已放到github上,大家可以自行查看umi-react。如果觉得不错,请 start 一下
我建了一个QQ群,大家加进来,可以一起交流。群号 787846148
03 基于umi搭建React快速开发框架(封装列表增删改查)的更多相关文章
- 01 基于umi搭建React快速开发框架
介绍 基于umi搭建一个快速开发框架,react 应用框架.umi 以路由为基础的,支持类 next.js 的约定式路由,以及各种进阶的路由功能,并以此进行功能扩展,比如支持路由级的按需加载. 我们会 ...
- 02 基于umi搭建React快速开发框架(国际化)
前言 之前写过一篇关于React的国际化文章,主要是用react-intl库,雅虎开源的.react-intl是用高阶组件包装一层来做国际化. 基于组件化会有一些问题,比如在一些工具方法中需要国际化, ...
- 基于gin的golang web开发:mysql增删改查
Go语言访问mysql数据库需要用到标准库database/sql和mysql的驱动.标准库的Api使用比较繁琐这里再引入另一个库github.com/jmoiron/sqlx. go get git ...
- 基于SpringBoot开发一个Restful服务,实现增删改查功能
前言 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练. ...
- node.js封装数据库增删改查
数据库增删改查的封装 小编不容易 const sql = { insert: function (Collection, insertData) { return new Promise((resol ...
- 使用虚拟机在ubuntu下搭建mongoDB开发环境和简单增删改查操作
最近在折腾mongodb和nodejs,在imooc上找了一个mongodb的入门教程,跟着里面一步一步的走,下面记录下我操作的步骤和遇到的问题. 课程地址:http://www.imooc.com/ ...
- idea使用maven搭建ssm框架实现登陆商品增删改查
创建项目->maven->webapp->输入坐标->完成. pom.xml <project xmlns="http://maven.apache.org/P ...
- PHP历程(封装的增删改查方法)
db.class.php 主要方法 <?php /** * 数据库配置信息 */ define('DB_HOST','127.0.0.1'); //服务器 define('DB_USER', ...
- 后台代码对iBatis配置文件中具体的sql语句的调用实现(被封装的增删改查)
using IBatisNet.Common.Exceptions; using IBatisNet.DataAccess; using IBatisNet.DataAccess.DaoSession ...
随机推荐
- QT QLabelde 使用技巧总结
QLabel提供了一个文本或图像的显示,没有提供用户交互功能. 一个QLabel可以包含以下任意内容类型: 内容 设置 纯文本 使用setText()设置一个QString 富文本 使用setText ...
- Android 如果布局中有ScrollView和Fragment或者带有滚动条的布局进行嵌套,布局加载完成页面无法定位到顶部的情况
页面无法定位到顶部: 1.ScrollView中嵌套Fragment(Fragment中可能有想ScrollView,ListView带有滚动条的控件). 2.ScrollView嵌套ScrollVi ...
- 浅谈传感器常用Delta-SigmaADC
过采样ADC,或噪声整形ADC,也叫Delta-Sigma ADC.名字很多,基本上都由求差电路,积分求和电路组成调制器,后续由数字滤波器获得Nbit数字输出.不管怎样,数学上的除法能够让你理解这类A ...
- Luogu3162 CQOI2012 组装 贪心
传送门 如果提供每一种零件的生产车间固定了,那么总时间\(t\)与组装车间的位置\(x\)的关系就是 \(t = \sum (x-a_i)^2 = nx^2-2\sum a_ix + \sum a_i ...
- Qt小项目之串口助手控制LED
Qt小项目之串口助手控制LED 前言 最近刚学了一点Qt开发上位机,尝试着做个小软件练练手.查找了很多资料,做了一个简单的串口助手,可以实现串口基本发送和接收功能,支持中文显示,还可以控制STM32开 ...
- vs2017+opencv4.0.1安装配置详解(win10)
一.说明 笔者之前已经安装过了vs2017,对应的opencv是3.4.0版本的.但现在想体验下opencv4的改变之处,所以下载了最新的opencv4.0.1. vs2017的安装请自行搜索安装,本 ...
- Linux下FastDFS分布式存储-总结及部署记录
一.分布式文件系统介绍分布式文件系统:Distributed file system, DFS,又叫做网络文件系统:Network File System.一种允许文件通过网络在多台主机上分享的文件系 ...
- Redis常用操作--------SortedSet(有序集合)
1.ZADD key score member [[score member] [score member] ...] 将一个或多个 member 元素及其 score 值加入到有序集 key 当中. ...
- 第三次作业(1) Visual Studio程序安装过程和练习过程
Visual Studio程序安装过程和练习过程 第一步 首先要在网上找一个VS2013的安装包,之后我安装在D盘上,C盘上也需要有5.2G空间,勾选相应的选项,才能继续安装. 安装的过程很漫长,接近 ...
- SCRUM 12.20
以下为我们爬虫遇到问题的报告 我们团队的m2阶段原本计划是爬取美团的信息以支持我们的app对比功能,但在这一阶段遇到很多问题,主要表现如下: 美团反爬机制: 由于我们团队人员在事先并不知道美团具有反爬 ...