React 全自动数据表格组件——BodeGrid的实现思路


Posted in Javascript onJune 12, 2019

表格是在后台管理系统中用的最频繁的组件之一,相关的功能有数据的新增和编辑、查询、排序、分页、自定义显示以及一些操作按钮。我们逐一深入进行探讨以及介绍我的设计思路:

表格是在后台管理系统中用的最频繁的组件之一,相关的功能有数据的新增和编辑、查询、排序、分页、自定义显示以及一些操作按钮。我们逐一深入进行探讨以及介绍我的设计思路:

新增和编辑

想想我们最开始写新增编辑页面是怎么做的,是不是一个页面一个页面的写,然后要么表单提交要么Ajax提交。后台有无数个新增和编辑的视图页,现在想想真是恐怖啊,看着都累。后面接触到kendoui的grid组件,看到只需要配置列的属性以及保存的地址就能自动完成新增和编辑功能,着实让我兴奋了一把。然而不幸的是我几乎找遍了react所有的组件库,都没找到一个类似的组件,无奈只有自己动手了。设计思路:

1、设置每一列的类型,比如文本、数字、图片、时间、bool值、下拉选择框等等。

2、为不同类型提供不同的操作组件,比如文本的input组件,图片的file组件。这样在新增和编辑的时候会根据列以及其类型生成对应的表单。

3、保存用户输入,提交至配置的url地址。

查询、排序、分页

查询、排序和分页几乎是每个表格页面必须的功能,实现方式也多种多样,这里介绍表格万能查询和排序的设计思路:

1、每一列是否可以查询应该是可以配置的。

2、针对不同的数据类型查询条件应该有所区别,比如文本有“包含”条件,数字有“大于”条件等。

3、后端的处理应该统一,为每一个查询条件编写查询逻辑是很费力不讨好的工作。

4、每一列是否可以排序是可以配置的,排序分正序和倒序. 

最后表格的请求体设计如下:

{
 "pageIndex":1,
 "pageSize":15,
 "sortConditions":[
  {
   "sortField":"name",
   "listSortDirection":1
  }
 ],
 "filterGroup":{
  "rules":[
   {
    "field":"displayName",
    "operate":"contains",
    "value":"a"
   }
  ]
 }
}

整个组件的源码还是比较复杂,这里就不深入了,有兴趣的同学可以查看react-demo中的bode-grid.js源码,地址:https://github.com/liuxx001/react-demo.git

不过使用起来还是很简单的,如下所示:

getInitialState:function () {
 let gridOptions={
  ref:this,
  title:"角色列表",
  url:{
   read:ApiPrefix+"zero/role/GetRolePagedList",
   add:ApiPrefix+"zero/role/CreateRole",
   edit:ApiPrefix+"zero/role/UpdateRole",
   delete:ApiPrefix+"zero/role/DeleteRole"
  },
  columns:[
   {title:"角色名",data:"name",type:"text",editor:{},query:true},
   {title:"显示名",data:"displayName",type:"text",editor:{},query:true},
   {title:"是否静态角色",data:"isStatic",type:"switch",editor:{},query:true},
   {title:"是否默认角色",data:"isDefault",type:"switch",editor:{},query:true},
   {title:"操作选项",type:"command",actions:[{name:"设置权限",onClick:showPermissionModel}]}
  ]
 };
 return {
  gridOptions: gridOptions
 };
}

很少的代码就能完全实现表格的展示、新增、编辑、排序、查询、分页等功能,显示效果:

BodeGrid表格api:

参数 类型 说明 默认值
ref object ref指向本身,用于行内按钮绑定数据 ref:this,固定写法
title string 表格标题  
url object 远程api接口配置  
columns array[object] 表格列属性配置  
actions array[object] 表格右上角自定义按钮  
pageSize number 每页显示数量 15
pageSizeOptions array[string] 可选显示数量 ["10","15","20","30","50","100"]
sortField string 初始排序字段 第一列
sortDirection string 初始排序方式 desc

columns属性详细介绍:

React 全自动数据表格组件——BodeGrid的实现思路

总结

以上所述是小编给大家介绍的React 全自动数据表格组件——BodeGrid的实现思路 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
javascript生成/解析dom的CDATA类型的字段的代码
Apr 22 Javascript
在线编辑器中换行与内容自动提取
Apr 24 Javascript
javascript 保存文件到本地实现方法
Nov 29 Javascript
Javascript中各种trim的实现详细解析
Dec 10 Javascript
js实现一个链接打开两个链接地址的方法
May 12 Javascript
PageSwitch插件实现100种不同图片切换效果
Jul 28 Javascript
javascript轮播图算法
Oct 21 Javascript
利用 spin.js 生成等待效果(js 等待效果)
Jun 25 Javascript
vue中axios处理http发送请求的示例(Post和get)
Oct 13 Javascript
原生JS与jQuery编写简单选项卡
Oct 30 jQuery
详解React 在服务端渲染的实现
Nov 16 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
Sep 26 Javascript
详解如何提升JSON.stringify()的性能
Jun 12 #Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
Jun 12 #Javascript
浅谈webpack 四个核心概念之Entry
Jun 12 #Javascript
vue安装遇到的5个报错及解决方法
Jun 12 #Javascript
深入学习JavaScript 高阶函数
Jun 11 #Javascript
javascript防抖函数debounce详解
Jun 11 #Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
Jun 11 #Javascript
You might like
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
jQuery 获取对象 定位子对象
2010/05/31 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
Python实现简单的文件传输与MySQL备份的脚本分享
2016/01/03 Python
Python中取整的几种方法小结
2017/01/06 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
Python Celery多队列配置代码实例
2019/11/22 Python
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
焊接专业毕业生求职信
2013/10/01 职场文书
大学毕业通用个人的求职信
2013/12/08 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
怀念母亲教学反思
2014/04/28 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
导游带团欢迎词
2015/09/30 职场文书
如何在Python项目中引入日志
2021/05/31 Python
Python OpenCV实现图像模板匹配详解
2022/04/07 Python