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 相关文章推荐
uploadify 3.0 详细使用说明
Jun 18 Javascript
解析prototype,JQuery中跳出each循环的方法
Dec 12 Javascript
chrome不支持form.submit的解决方案
Apr 28 Javascript
浅谈JavaScript中的字符编码转换问题
Jul 07 Javascript
快速入门Vue
Dec 19 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
Dec 25 Javascript
jQuery简单绑定单个事件的方法示例
Jun 10 jQuery
解决Vue页面固定滚动位置的处理办法
Jul 13 Javascript
基于Vue实现支持按周切换的日历
Sep 24 Javascript
微信小程序动画(Animation)的实现及执行步骤
Oct 28 Javascript
TypeScript高级用法的知识点汇总
Dec 17 Javascript
js作用域及作用域链工作引擎
Jul 07 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
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
用php来检测proxy
2006/10/09 PHP
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
2014/10/17 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
2017/09/18 Javascript
浅谈Node.js 子进程与应用场景
2018/01/24 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
Python实现分割文件及合并文件的方法
2015/07/10 Python
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
python下载的库包存放路径
2020/07/27 Python
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
生产部厂长助理职位说明书
2014/03/03 职场文书
求职信怎么写范文
2014/05/26 职场文书
中职生自荐信范文
2014/06/15 职场文书
亲子运动会的活动方案
2014/08/17 职场文书
商业门面租房协议书
2014/11/25 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
解决pytorch-gpu 安装失败的记录
2021/05/24 Python
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS