你们在作业务系统的时候,不少地方都是列表增删改查,作这些功能占据了你们很长时间,若是咱们有相似的业务,半个小时就能作出一套那是否是很爽呢。
这样咱们就能够有更多的时间学习一些新的东西。咱们这套框架对此作了下封装,适合的小伙伴也能够借鉴封装到本身的框架当中去。核心思想用的React
高阶组件解耦,接下来咱们看看怎么用。react
import { BTable } from 'bcomponents';
写好咱们的页面模板。调用BTable
的高阶组件BTable.tableEffectHoc
,传入url和columns参数就能够了,是否是很简单git
@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;
查看演示
github
建立list.js, 来配置和加强咱们的table,注意咱们须要使用Btable。api
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
来快速完成咱们的查询和建立antd
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就完成了。
查看演示
ui
BTable文档地址this
线上演示地址:http://39.105.188.65:8080/system/channelurl
目前我正在开发一个头条的开源项目。能够用此地址查看,这个是用的真实的数据
表格的增删改查封装已经完成, 代码已放到github上,你们能够自行查看umi-react。若是以为不错,请 start 一下
我建了一个QQ群,你们加进来,能够一块儿交流。群号 787846148