0


【antd组件之ProTable,EditableProTable】

1. 每一列数据

// 每一列数据// type是定义了一个新类型,每一个就是定义columns的dataIndex
type GithubIssueItem ={url: string;id: number;number: number;title: string;labels:{name: string;color: string;}[];state: string;comments: number;created_at: string;updated_at: string;
  closed_at?: string;};

2. ProColumns配置项

// 所有table需要配置的属性,都可以在最前面定义,下面直接用 columns={columns}使用// 定义了几列,每一列的配置// 类型是ProColumns,相当于ProTable里面的columns列// 列定义/**
 * 
{
  title//列头显示文字
  align//设置列里面文字的对齐方式  left,rignt,center
  className//列样式类名
  colSpan//表头列合并
  dataIndex//列数据在数据项中对应的路径,支持通过数组查询嵌套路径
  key//React 需要的 key,如果已经设置了唯一的 dataIndex,可以忽略这个属性
  render//生成复杂数据的渲染函数,参数分别为当前行的值,当前行数据,行索引
  function(text, record, index) {}
  ellipsis//是否自动缩略
  copyable//是否支持复制,会出现复制的小图标
  valueEnum//值的枚举,会自动转化把值当成 key 来取出要显示的内容
  valueType
  filedProps
  // valueType和fieldProps会把上面那个form查询表单渲染为select类型的下拉框
  // 里面的值就是fieldProps里的options
  valueType: 'select',
  fieldProps:{
    options: statusList
  },
  render: (_: any, record: any) => {
    console.log(record)
    return (
      <>
        <Badge
          status={record.status === 1 ? "success" : "error"}
          text={record.status === 1 ? "启用" : "禁用"} />
      </>)
  }
}

*/

3. ProTable配置项

// table属性/****
 * request//获取 dataSource 的方法
 * (params?: {pageSize,current},sort,filter) => {data,success,total}    
 * 会返回一个对象,具有data,success,total三个属性,
 * data就是table的数据源,total就是右下角那个共多少条
 * 必须配合 manualRequest={false}一起使用
 * 如果配置 manualRequest={true} 的话,需要手动点击上面的查询按钮才能获取到数据
 * eg:request={() => {
      return Promise.resolve({
        total: 200,
        data: tableListDataSource,
        success: true,
      });
    }}

  * manualRequest//是否需要手动触发首次请求, 配置为 true 时不可隐藏搜索表单
  * columns//表格列的配置描述,具体项见下表
  * dataSource//数据数组,Table 的数据,protable 推荐使用 request 来加载
  * eg:      
  * // dataSource={tableListDataSource}
      request={() => { 
        return Promise.resolve({
          total:200,
          data:tableListDataSource,
          success:true
        })
       }}
  * 
  * defaultData//默认数据
  * actionRef//Table action 的引用,便于自定义触发
  * formRef // 可以获取到查询表单的 form 实例,用于一些灵活的配置
  * //好像就是table右上角的按钮
  * toolBarRender//渲染工具栏,支持返回一个 dom 数组,会自动增加 margin-right,
  * (action) => ReactNode[]
  * eg:
  *   toolBarRender={() => [
        <Button key="button" icon={<PlusOutlined />} type="primary">
          新建
        </Button>,
        <Dropdown key="menu" overlay={menu}>
          <Button>
            <EllipsisOutlined />
          </Button>
        </Dropdown>,
      ]}
  * 
  * options //table 工具栏,设为 false 时不显示.传入 function 会点击时触发
  * eg:
  *     options={{   
          // 密度,每个框框的高度
          density: false,
          // 全屏
          fullScreen: false,
          // 刷新
          reload: false,
          // 设置
          setting:false,
          // 搜索input框
          search: true 
        }}

  * search //是否显示搜索表单,传入对象时为搜索表单的配置,就是table上面的那个搜索表单
      只能赋值false或者配置项
      通过对象形式进行控制,搜文档
  * 
  * editable //可编辑表格的相关配置
  * 
  * columnsState //受控的列状态,可以操作显示隐藏
  * 
  * pagination //分页的配置项。
  * 
  * dateFormatter //转化 moment 格式数据为特定类型,false 不做转化
  * 
  * *
  * onLoad //数据加载完成后触发,会多次触发
    * pagination //分页器   
    *  pagination={{current:1,total:20}}
  * rowKey  // 表格行 key 的取值,可以是字符串或一个函数
    rowKey="id"
    * rowSelection // 表格行是否可选择 对象 
  * 如果配置为可选 ,则会自动添加一列 可以配置为checkout || radio
    rowSelection={{
      // 固定为左边
      fixed: true,
      // 显示上面已选择几项
      alwaysShowAlert: true,
      // 选中项发生变化时的回调,设置选中行为当前所有行
      onChange: (keys, rows) => {
        console.log(keys, rows)
        setSelectedRows(rows)
      }
    }}
    * 
    * 
    *
    ****
  * 

4. EditableProTable

// columns配置//   editable: false || (_: any, record: any, index: number) => Boolean, 如果不设置,则默认这一行都可以编辑/***
 * EditableProTable配置项
 * 
 * * 用value使表格的数据可控,当整个表格通过request请求得到数据后,就会触发表格的onChange事件,将数据存入dataSource里面
 * 
 * * actionRender自定义操作栏
 *    可编辑表格默认提供了三大金刚,保存,删除和取消,如果我们要实现复制一行,或者需求只需要 保存和取消, 不需要删除按钮就需要自定义
 * 
 *     #编辑 ,复制此行到末尾
 *      render: (text, record, _, action) => {
 *        return [
 *          <a
 *            key="editable"
 *            onClick={() => {
 *              action?.startEditable?.(record.id);
 *            }}
 *          ></a>,
 *          <EditableProTable.RecordCreator
 *            record={{
 *              ...record,
 *              id: (Math.random() * 1000000).toFixed(0),
 *            }}
 *          }}><a>复制此行到末尾</a></EditableProTable.RecordCreator>
 *        ] 
 *      }
 * 
 * 
 * 
 * 1. value 相当于ProTable的dataSource
 * 2. onChange  dataSource 修改时触发,删除和修改都会触发,如果设置了 value,Table 会成为一个受控组件。
 * 3. editable 可编辑表格的相关配置 
 *   ① type: 可编辑表格的类型,单行编辑或者多行编辑 single || multiple
 *   ② editableKeys: 正在编辑的行,受控属性
 *   ③ onChange: 行数据被修改时触发 (editableKeys, editableRows) => void
 *   ④ onSave: 保存一行的时候触发 (key, row, originRow, newLine) => Promise
 *   ⑤ saveText: 保存一行的文字
 *   ⑥ onDelete: 删除一行的时候触发 (key, row) => Promise
 *   ⑦ deleteText: 删除一行的文字 
 *   ⑧ onCancel: 取消一行时触发 (key, row, originRow, newLine) => Promise
 *   ⑨ actionRender: 点击编辑后这列显示的操作
 * 
 *         actionRender: (row, config, defaultDom) => {
            return [
              defaultDom.save,
              defaultDom.delete || defaultDom.cancel,
              <a
                key="set"
                onClick={() => {
                  i++;
                  editorFormRef.current?.setRowData?.(config.index!, {
                    title: '动态设置的title' + i,
                  });
                }}
              >
                动态设置此行
              </a>,
            ];
          },
 * 
 * 4. recordCreatorProps新建按钮配置,|| false   同时使用 actionRef.current?.addEditRecord(row)  来控制新建行。
 *        {
 *          position: 'bottom',
 *          type: 'primary'
 *         }
 *         actionRef.current?.addEditRecord?.({
              id: (Math.random() * 1000000).toFixed(0),
              title: '新的一行',
            });

 *   ① position 配置添加在表格头还是表格尾部 bottom || top 
 *   ② record  配置新增行的默认数据   record: () => ({ id: (Math.random() * 1000000).toFixed(0) }),
 *   ③ style 按钮的样式设置,可以设置按钮是否显示,
 *    style: {
 *      position: 'absolute ,
 *      left: 0,
 *      top: -4,
 *    }
 *   ④ parentKsy  要增加到哪个节点下
 *   ⑤ creatorButtonText  设置按钮文案
 * 
 * 
 *   
 * 
 */

本文转载自: https://blog.csdn.net/m0_56542349/article/details/128704089
版权归原作者 呐呐呐呐。 所有, 如有侵权,请联系我们删除。

“【antd组件之ProTable,EditableProTable】”的评论:

还没有评论