0.0.5 • Published 8 years ago

fe-table v0.0.5

Weekly downloads
1
License
ISC
Repository
github
Last release
8 years ago

Editable table

demo链接:http://git.lianjia.com/react/Table


概览

  • data Object<Object> 表格的数据结构,作为表格的渲染依据,主要逻辑
  • onChange Function(event, map, 'head'/'body',x, y)表格在编辑状态发生改变时触发的函数(表头没有x,head和body的坐标是独立的)
  • onClick Function(event, map, 'head'/'body',x, y)|表格在被点击时触发的函数
  • map String 作为onChange/onClick的参数,可不设置,通过bind传

data

  • editing Bool |false| 表格是否处于编辑状态
  • loading Bool |false|表格是否处于加载中状态(可作为浮层显示在已有数据上)
  • error Boolfalse|表格是否显示错误信息
  • errorMsgString|undefined|错误信息,可用于动态请求数据后error处理
  • title String|undefined|表格标题
  • head Array<Object> |[]| 表头,一维数组,是一组对象的集合,每个对象作为表头的一个cell(具体对象格式在cell中给出)
  • body Array<Obejct>|[]|表格主体,一维数组,父数组决定表格有几行,每个对象的data为子数组,决定每个cell的具体内容(具体对象格式在cell中给出),对象的isShow决定子数组是否显示

cell

object

表格每个单元的数据结构

  • editable Bool|false|此单元是否是可编辑的,若为可编辑的,将在表格处于编辑状态时渲染为可编辑组件
  • fastEdit Bool|false|当为true,无论表格处于什么状态,此单元格将被置为可编辑状态|
  • value/text String/Array/Object |''|表格单元显示的内容,优先取value,同时若是在editable为true时,value作为值传给inputselect
  • key String|''|可以作为单元的标识
  • props Object|undefined|传给editable为true的cell的props,可以灵活运用,可以传任何属性给可editable为true的组件,样式等,甚至是onClick,onChange,onBlur这类的函数
  • renderCell Function|undefined|返回值必须是组件,可替代原有的渲染方式,有两个默认的参数,arg1为此cell,arg2(bool)为表格是否处于编辑状态,可用此方法灵活更改单元格的渲染方式

注:cell中可以自定义key用来保存后端数据,此对象将作为data传给底层的单元


event

表格暴露给外部两个事件:onClickonChange 两个事件的参数一样onChange函数主要可以用于表格处于可编辑状态时,进行状态更新(使用renderCell渲染的组件没有这两个事件)。 参数如下:

1.event:默认的event事件,可以从event.target中取得input和select改变的值;

2.map: 传给组件的map属性的值,可用来标识表格;

3.type:'caption'或'head'或'body'区分事件源为标题或表头和表格主体;

4.arg4:若type为表头,表示点击的是第几列,若type为表格body,表示事件源处于是第几行(0表示head中的第一列或body中的第一行)

5.arg5:只有当type是'body'时,才有值,为事件源处于第几列

注:click事件是在整个table上捕获的,change事件是在具体单元上捕获的

附1

数据结构实例:

let data = {
  editing: false,
loading: false,
error: false,
errorMsg: '异常',
title: '表格1',
head: [
  {
    value: '头1',
    key: 'head1',
    props: {
      style: {
        color: 'lightblue'
      }
    }
  },{
    value: 'tou2',
    key: 'head2',
    renderCell: (data, editing) => <span>{data.value}</span>
  }
],
body: [
  {
    isShow: true,
    data: [
      {value: '0行0列', key: 'head1'},
      {value: '0行1列', key: 'head2'}
    ]
  },
  {
    isShow: false,
    data: [
      {value: '1行0列', key: 'head1'},
      {value: '1行1列', key: 'head2'}
    ]
  },
]

}

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago