Skip to content

排序

基础排序

列配置中StkTableColumn['sorter'] 设置为 true 即可开启排序。

点击表头即可触发排序。

loading

自定义排序

列配置中StkTableColumn['sorter'] 可以设置为一个函数。

通过 sorter(data, { column, order }) 自定义排序规则。

该函数会在排序时触发,表格将使用函数的返回值展示。

参数类型说明
dataDataType[]表格的数据。
columnStkTableColumn当前排序的列。
order'desc' | 'asc' | null当前排序的顺序。

下述表格中自定义了 Rate 列字段的大小排序规则。

loading

更多排序用法请移步 自定义排序

sortField 排序字段

有些字段可能会使用独立的字段来排序,比如年、月、日字段,此时可提供的一个排序专用字段,年、月都转换为最小单位日,便于排序,此时通过 sortField 指定该排序字段。

下面表格 period 列指定了 periodNumber 作为排序字段。

loading

空字段不参与排序

配置 props.sortConfig.emptyToBottom 空字段将始终置于列表底部

vue
<StkTable :sort-config="{emptyToBottom: true}"></StkTable>
loading

指定默认排序列

配置 props.sortConfig.defaultSort 控制默认排序。

WARNING

设置了默认排序时,如果没有排序则会排序默认排序字段。

点击下方表格 Name 列排序观察其行为。

loading

服务端排序

配置 props.sort-remotetrue,这样就不会触发组件内部的排序逻辑。

点击表头后,会触发 @sort-change 事件,您可以在事件中发起 ajax 请求,然后重新对 props.dataSource 赋值,完成排序。

vue
<StkTable sort-remote></StkTable>
loading

API

StkTableColumn列配置

StkTableColumn 列配置参数。

ts
const columns: StkTableColumn[] = [{
    sorter: true,
    sortField: 'xxx',
    sortType: 'number',
}]
参数类型默认值说明
sorterboolean | ((data: T[], option: { order: Order; column: any }) => T[])false指定是否开启排序。
sortFieldstring同 StkTableColumn['dataIndex']指定排序的字段。
sortType'string' | 'number'默认检测该列第一行的数据类型,判断 'string''number' 排序。指定排序的类型。

props.sortConfig

SortConfig 类型:

ts
type SortConfig<T extends Record<string, any>> = {
    /** 空值始终排在列表末尾 */
    emptyToBottom?: boolean;
    /**
     * 默认排序(1.初始化时触发 2.排序方向为null时触发)
     * 类似onMounted时,调用setSorter点了下表头。
     */
    defaultSort?: {
        /**
         * 列唯一键,
         *
         * 如果您配了 `props.colKey` 则这里表示的列唯一键的值
         */
        key?: StkTableColumn<T>['key'];
        dataIndex: StkTableColumn<T>['dataIndex'];
        order: Order;
        sortField?: StkTableColumn<T>['sortField'];
        sortType?: StkTableColumn<T>['sortType'];
        sorter?: StkTableColumn<T>['sorter'];
        /** 是否禁止触发sort-change事件。默认false,表示触发事件。 */
        silent?: boolean;
    };
    /**
     * string sort if use `String.prototype.localCompare`
     * default: false
     */
    stringLocaleCompare?: boolean;
};

@sort-change

defineEmits 类型:

ts
/**
 * 排序变更触发。defaultSort.dataIndex 找不到时,col 将返回null。
 *
 * ```(col: StkTableColumn<DT> | null, order: Order, data: DT[], sortConfig: SortConfig<DT>)```
 */
(
    e: 'sort-change',
    /** 排序的列 */
    col: StkTableColumn<DT> | null, 
    /** 正序/倒序 */
    order: Order,
    /** 排序后的值 */
    data: DT[], 
    sortConfig: SortConfig<DT>
): void;

Expose

ts
defineExpose({
    /**
     * 设置表头排序状态
     */
    setSorter,
    /**
     * 重置sorter状态
     */
    resetSorter,
    /**
     * 表格排序列顺序
     */
    getSortColumns,
})

详情参考 Expose 实例方法

根据 MIT 许可证发布