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 相关文章推荐
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
Nov 15 Javascript
node.js中的http.get方法使用说明
Dec 14 Javascript
jQuery对象的length属性用法实例
Dec 27 Javascript
JavaScript原生对象之Number对象的属性和方法详解
Mar 13 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
Sep 14 Javascript
JavaScript生成二维码图片小结
Dec 27 Javascript
在AngularJS中使用jQuery的zTree插件的方法
Apr 21 Javascript
详解vue-router导航守卫
Jan 19 Javascript
javascript实现导航栏分页效果
Jun 27 Javascript
详解package.json版本号规则
Aug 01 Javascript
jquery实现上传文件进度条
Mar 26 jQuery
ElementUI实现el-form表单重置功能按钮
Jul 21 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中常量,变量的作用域和生存周期
2013/08/10 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
JS实现可拖曳、可关闭的弹窗效果
2015/09/26 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
python ---lambda匿名函数介绍
2019/03/13 Python
Python3.5运算符操作实例详解
2019/04/25 Python
Python3中FuzzyWuzzy库实例用法
2020/11/18 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
国际领先的学术出版商:Springer
2017/01/11 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
开业庆典邀请函
2014/01/08 职场文书
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
优秀学生获奖感言
2014/02/15 职场文书
《三峡》教学反思
2014/03/01 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
MySQL infobright的安装步骤
2021/04/07 MySQL