其他分享
首页 > 其他分享> > UI组件 - ProComponents - ProTable

UI组件 - ProComponents - ProTable

作者:互联网

1 说明
1 文档中有很多代码是让人难以接受的

2 
2 难以接受的代码
  文档 --> const columns: ProColumns<GithubIssueItem>[] = [ ...]   // 可能就是在描述, 你要给我赋值一个数组
  实际 --> columns = [ ...]   // 主要用于设置表头的

  文档 --> <ProTable <TableListItem> columns={this.columns}/>   // 某些不合理的 <> 内容可以认为是注释信息
  实际 --> <ProTable columns={this.columns}/>

  文档 --> const ref = useRef<ActionType>()   // useRef 都查不到
  实际 --> const ref = React.createRef()   // 理解为, 创建一个自己的 Refs

  文档 --> { transform: (value: any) => any }
  实际 --> { transform:  }

  文档 --> (action) => ReactNode[]   // 表示数组里面放, 标签元素
  实际 --> () => [<Button>呵呵<Button/>, <Button>哈哈<Button/>]   // 可以没有参数
3 文档常识问题
1 ReactNode --> 表示元素标签
3 组件标签的常用 API 属性
<ProTable 
	headerTitle = ""   // 表格左上边的文字标题 --> 示例中
	bordered   // 布尔属性 --> 表示带边框的表格 --> Ant Design
	actionRef={this.actionRef}   // 可手动触发 table 的 reload(重新加载) 等操作 --> ProTable
	formRef={this.formRef}   // 也是表单数据域的纽带 --- 和上面的区别暂时不知道 --> ProTable
	rowKey="id"   // 表格行 key 的取值,可以是字符串或一个函数 ---> Ant Design
	search={{}}   // 是否显示搜索表单,传入对象时为搜索表单的配置, 有一小点明白 ---> ProTable
	pagination={{}}   // 分页器的相关配置 ---> Ant Design
	toolBarRender={()=>{}}   // 渲染工具栏 --> 可在下面的表格头上面添加按钮 ---> ProTable
	columns={this.columns}   // 终于是最简单的, 表格列的导航栏, 但是也有不少可操作空间的 --> Ant Design
	request={}   // 获取数据源的方法, 只是大致知道干什么的 ---> ProTable
	rowSelection={{}}   // 表格行是否可选择, 好多配置项, 看不懂, 好难 ---> Ant Design
	expandedRowRender={}   // 执法仪管理, 项目里面的, 这可能是个自定义事件  // 确定不以 on 开头是否可以
>


1 actionRef   // 使用流程
-------------------------------------------------------------------------------
  actionRef = React.createRef()   // 组件中定义方法的位置, 创建 Refs
  <ProTable actionRef={this.actionRef} />   // 结合上面, 应该是那个重置功能
-------------------------------------------------------------------------------


2 columns   // 涉及问题
-------------------------------------------------------------------------------
columns = [
  {
    title: '用户',   // 表头标题名
    dataIndex: 'username',   // 列数据在数据项中对应的路径, 支持通过数组查询嵌套路径
    key: 'username',   // 保证其唯一性, 如果已经设置了唯一的 dataIndex, 可以忽略这个属性
    hideInSearch: true,   // 默认会出现该项对应的搜索表单, 设置这个即可隐藏 --- 太牛逼了这功能
    render: () => {},   // 貌似可以控制表格内容或格式的
    renderFormItem: () => {},   // 渲染查询表单的输入组件
    hideInTable: true,   // 在表格中不显示
    valueType: 'unitTree',   // 自定义, 文档可以说是根本看不懂
    ellipsis: true,   // 关于自动收缩的
  }
]
-------------------------------------------------------------------------------

3 "columns/valueType"   // 绿色的是 columns 的内置 API
-------------------------------------------------------------------------------
很多步骤 -- 视图笔记有

-------------------------------------------------------------------------------


3 rowSelection   // 多选功能涉及的问题 -- Ant Design
-------------------------------------------------------------------------------
rowSelection={{   // 传入的应该是一个对象
  onChange: () => {}   // 选中项发生变化时的回调 -- 还有很多配置项
}}
-------------------------------------------------------------------------------


4 toolBarRender
-------------------------------------------------------------------------------
toolBarRender = () => [
    <Button type="primary" key="primary" onClick={() => {this.setState({showFormModal: true})}}>
      <PlusOutlined /> {___('新增')}
    </Button>,
    <Button type="primary" key="primary" onClick={() => {}}>
      <ImportOutlined /> {___('导入')}
    </Button>
  ]

toolBarRender={this.toolBarRender}
-------------------------------------------------------------------------------


5 search   // ProTable 自带重置和查询, 这个 API 可以在此位置添加新的按钮
-------------------------------------------------------------------------------
search={{
            labelWidth: 70,
            optionRender: (searchConfig, formProps, dom) => [
              ...dom.reverse(),
              <ExcelBar key="export" type="default" name={___('导出')} url='/api/log/export'
                params={() => {
                  return formProps.form.getFieldsValue()
                }}
              />
            ]
          }}   // 有很多自己的 API 不是看的很懂
-------------------------------------------------------------------------------


6 pagination   // 分页器
-------------------------------------------------------------------------------
pagination={{
  show: true,   // 文档没有
  size: 'default',   // 当为 small 时, 是小尺寸分页
  pageSize: 10,   // 每页条数
  current: 1,   // 当前页数
}}
-------------------------------------------------------------------------------


7 request   // 获取数据的 API
-------------------------------------------------------------------------------
import { query } from '@/services/userApi';   // 数据接口

querySearch = async (params, sorter, filter) => {

    // 改变分页传参,服务端要求的参数是page
    params.page = params.current
    const result = await query({ ...params, perPage: params.pageSize, sorter, filter });
    return {
      data: result.data.data,
      total: result.data.total,
      success: true,
      pageSize: result.data.perPage,
      current: parseInt(`${params.currentPage}`, 10) || 1,
    }
  }

request={(params, sorter, filter) => this.querySearch(params, sorter, filter)}
-------------------------------------------------------------------------------


8 
-------------------------------------------------------------------------------


-------------------------------------------------------------------------------

标签:---,文档,--,----------------------------------------------------------------------
来源: https://blog.csdn.net/weixin_46178697/article/details/117705584