前言

大家在做业务系统的时候,很多地方都是列表增删改查,做这些功能占据了大家很长时间,如果我们有类似的业务,半个小时就能做出一套那是不是很爽呢。

这样我们就可以有更多的时间学习一些新的东西。我们这套框架对此做了下封装,适合的小伙伴也可以借鉴封装到自己的框架当中去。核心思想用的React

高阶组件解耦,接下来我们看看怎么用。

基础用法

  1. 导入我们的业务组件
```
import { BTable } from 'bcomponents';
```
  1. 写好我们的页面模板。调用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;
  2. 查看演示

完整的一套增删改查

  1. 创建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;
  2. 写我们的页面模板,完成创建和查询的操作。我们这次用了BTable.SearchBTabLe.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表单项就可以了,是不是很简单。

    至此。我们的创建和查询就完成了

  3. 添加编辑功能。编辑和删除的操作在列表上,所以我们需要在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就可以了。是不是很简单

  4. 添加删除功能

    BTable.Del({
    url: `/api/table/${data.id}`,
    getData,
    })

    这是最简单的了,传一个url和getData就完成了。

  5. 查看演示

关于

BTable文档地址

线上演示地址:http://39.105.188.65:8080/system/channel

目前我正在开发一个头条的开源项目。可以用此地址查看,这个是用的真实的数据

结束语

表格的增删改查封装已经完成, 代码已放到github上,大家可以自行查看umi-react。如果觉得不错,请 start 一下

我建了一个QQ群,大家加进来,可以一起交流。群号 787846148

03 基于umi搭建React快速开发框架(封装列表增删改查)的更多相关文章

  1. 01 基于umi搭建React快速开发框架

    介绍 基于umi搭建一个快速开发框架,react 应用框架.umi 以路由为基础的,支持类 next.js 的约定式路由,以及各种进阶的路由功能,并以此进行功能扩展,比如支持路由级的按需加载. 我们会 ...

  2. 02 基于umi搭建React快速开发框架(国际化)

    前言 之前写过一篇关于React的国际化文章,主要是用react-intl库,雅虎开源的.react-intl是用高阶组件包装一层来做国际化. 基于组件化会有一些问题,比如在一些工具方法中需要国际化, ...

  3. 基于gin的golang web开发:mysql增删改查

    Go语言访问mysql数据库需要用到标准库database/sql和mysql的驱动.标准库的Api使用比较繁琐这里再引入另一个库github.com/jmoiron/sqlx. go get git ...

  4. 基于SpringBoot开发一个Restful服务,实现增删改查功能

    前言 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练. ...

  5. node.js封装数据库增删改查

    数据库增删改查的封装 小编不容易 const sql = { insert: function (Collection, insertData) { return new Promise((resol ...

  6. 使用虚拟机在ubuntu下搭建mongoDB开发环境和简单增删改查操作

    最近在折腾mongodb和nodejs,在imooc上找了一个mongodb的入门教程,跟着里面一步一步的走,下面记录下我操作的步骤和遇到的问题. 课程地址:http://www.imooc.com/ ...

  7. idea使用maven搭建ssm框架实现登陆商品增删改查

    创建项目->maven->webapp->输入坐标->完成. pom.xml <project xmlns="http://maven.apache.org/P ...

  8. PHP历程(封装的增删改查方法)

    db.class.php   主要方法 <?php /** * 数据库配置信息 */ define('DB_HOST','127.0.0.1'); //服务器 define('DB_USER', ...

  9. 后台代码对iBatis配置文件中具体的sql语句的调用实现(被封装的增删改查)

    using IBatisNet.Common.Exceptions; using IBatisNet.DataAccess; using IBatisNet.DataAccess.DaoSession ...

随机推荐

  1. 在Qt项目中如何添加一个已有的项目作为子项目

    新建一个子目录项目(具体方法参见<类似Visual Studio一样,使用Qt Creator管理多个项目,创建子项目>),然后需要添加的项目移动到该子目录项目目录下,再在其pro文件中添 ...

  2. Percona XtraDB Cluster集群

    官网参考地址: https://www.percona.com/doc/percona-xtradb-cluster/LATEST/configure.html 前期准备: 都用的root权限或使用s ...

  3. Shiro的认证授权

    shiro安全框架入门整理 package com.shiro.test; import org.apache.shiro.SecurityUtils; import org.apache.shiro ...

  4. Luogu P1546 最短网络 Agri-Net

    其实这道题根本没必要写,但为了测试vector+堆优化的Prim试一发. 再次觉得Prim和Dijkstra很像,堆优化版本也差不多. 和Dijkstra一样,Prim也是在之前的dis点中选取一个最 ...

  5. python棋类游戏编写入门

    刚接触棋类游戏程序编写的朋友,往往比较迷惑,不知从何下手. 本文总结了棋类游戏的主程序流程.计算机走子策略.打分方式(以井字棋.黑白棋.五子棋为例),未使用minimax算法,比较简单,适合刚接触的朋 ...

  6. JavaScript 利用 async await 实现 sleep 效果

    const sleep = (timeountMS) => new Promise((resolve) => { setTimeout(resolve, timeountMS); }); ...

  7. Jmeter(二十八)_Docker+Jmeter+Gitlab+Jenkins+Ant(容器化的接口自动化持续集成平台)

    这套接口自动化持续集成环境已经部署差不多了,现在说说我的设计思路 1:利用Docker容器化Gitlab,Jenkins,Jmeter,Ant,链接如下 Docker_容器化gitlab Docker ...

  8. 记一次艰难的jquery easy-ui ajax post 体验

    分享的经验和教训是: 1.jquery easy-ui ajax post 复杂的Json给后端解析,后端如果接收和解析 2.asp.net webform jquery easy-ui datagr ...

  9. StoryLine3变量存储与跳转后台时的使用

    前言 公司项目原因,接触到storyline3(后面简称SL)课件制作工具,类似ppt,但是又多了互动.交互,且页面元素可添加触发器,触发器中可执行js代码. 1.官方教程 在SL中,会有“了解详情. ...

  10. WCF的练习。

    最近稍微又学习了下WCF,并做了一些联系.觉得很有收获,把东西都上传到git上了.然后在这里做一个链接导航. 无废话WCF入门教程一[什么是WCF] 无废话WCF入门教程二[WCF应用的通信过程] 无 ...