💎 Query List

QueryList 是为了解决常见的 CRUD 查询列表的样板代码的问题。

思路基本上就是照着官网指导 formilyjs.org/查询列表, 在交互形式和配置项上则更多是参考 ProComponents/ProTable;

<QueryList service={service}>
  <QueryForm />
  <QueryTable />
</QueryList>

QueryList#service - 查询服务

主要请求函数, 返回数据列表与总数, 入参包括查询表单, 分页、筛选、排序; 入参与 AntD#Table/onChange 保持一致, 追加了 params 即查询表单的参数;

type Service = (data:
{
  /** 查询表单参数 **/
  params: {}
  /** 分页参数, 参考 AntD **/
  pagination: {
    current: number,
    pageSize: number
  },
  /** 过滤参数, 参考 AntD **/
  filters: [],
  /** 排序参数, 参考 AntD **/
  sorter: {},
  /** 额外信息, 参考 AntD **/
  extra: {
    action: 'paginate' | 'sort' | 'filter',
    currentDataSouce: Record[]
  }
}) => Promise<{ list: Record[], total: number }>

QueryForm 查询表单

配置项主要是 layout & grid 布局属性

type QueryFormProps = React.PropsWithChildren<{
  resetText?: string;
  submitText?: string;
  grid?: React.ComponentProps<typeof FormGrid>;
  layout?: React.ComponentProps<typeof FormLayout>;
}>;

QueryTable 查询表格

QueryTable是基于 ProArrayTable 的封装, 只是处理与 QueryList 相关联的分页与查询逻辑; 所以几个功能钩子 ProArrayTable.xxx 是可以直接用的; 属性也完全一致;

QueryTable x ShadowForm 操作弹窗

QueryTable是基于 ProArrayTable 的封装, 只是处理与 QueryList 相关联的分页与查询逻辑; 所以几个功能钩子 ProArrayTable.xxx 是可以直接用的; 属性也完全一致;