sortingFn
sortDescFirst
enableSorting
enableMultiSort
invertSorting
sortUndefined
getAutoSortingFn
getAutoSortDir
getSortingFn
getNextSortingOrder
getCanSort
getCanMultiSort
getSortIndex
getIsSorted
getFirstSortDir
clearSorting
toggleSorting
getToggleSortingHandler
sortingFns
manualSorting
onSortingChange
enableSorting
enableSortingRemoval
enableMultiRemove
enableMultiSort
sortDescFirst
getSortedRowModel
maxMultiSortColCount
isMultiSortEvent
setSorting
resetSorting
getPreSortedRowModel
getSortedRowModel
排序状态以以下形式存储在表格中
export type SortDirection = 'asc' | 'desc'
export type ColumnSort = {
id: string
desc: boolean
}
export type SortingState = ColumnSort[]
export type SortingTableState = {
sorting: SortingState
}
export type SortDirection = 'asc' | 'desc'
export type ColumnSort = {
id: string
desc: boolean
}
export type SortingState = ColumnSort[]
export type SortingTableState = {
sorting: SortingState
}
以下排序函数是内置在表格核心中的
每个排序函数都会接收两个行和一个列 ID,并期望使用列 ID 来比较这两行,以升序返回 -1、0 或 1。这里有一个备忘单
返回值 | 升序 |
---|---|
-1 | a < b |
0 | a === b |
1 | a > b |
这是每个排序函数的类型签名
export type SortingFn<TData extends AnyData> = {
(rowA: Row<TData>, rowB: Row<TData>, columnId: string): number
}
export type SortingFn<TData extends AnyData> = {
(rowA: Row<TData>, rowB: Row<TData>, columnId: string): number
}
可以通过将以下内容传递给 columnDefinition.sortingFn 来使用/引用/定义排序函数
可用于 columnDef.sortingFn 的最终排序函数列表使用以下类型
export type SortingFnOption<TData extends AnyData> =
| 'auto'
| SortingFns
| BuiltInSortingFns
| SortingFn<TData>
export type SortingFnOption<TData extends AnyData> =
| 'auto'
| SortingFns
| BuiltInSortingFns
| SortingFn<TData>
sortingFn?: SortingFn | keyof SortingFns | keyof BuiltInSortingFns
sortingFn?: SortingFn | keyof SortingFns | keyof BuiltInSortingFns
此列要使用的排序函数。
选项
sortDescFirst?: boolean
sortDescFirst?: boolean
设置为 true,此列的排序切换将从降序开始。
enableSorting?: boolean
enableSorting?: boolean
启用/禁用此列的排序。
enableMultiSort?: boolean
enableMultiSort?: boolean
启用/禁用此列的多排序。
invertSorting?: boolean
invertSorting?: boolean
反转此列的排序顺序。这对于具有倒序最佳/最差尺度的值非常有用,其中较低的数字更好,例如排名(第 1、第 2、第 3)或类似高尔夫的得分。
sortUndefined?: 'first' | 'last' | false | -1 | 1 // defaults to 1
sortUndefined?: 'first' | 'last' | false | -1 | 1 // defaults to 1
注意:'first' 和 'last' 选项是 v8.16.0 中新增的
getAutoSortingFn: () => SortingFn<TData>
getAutoSortingFn: () => SortingFn<TData>
返回根据列值自动推断的排序函数。
getAutoSortDir: () => SortDirection
getAutoSortDir: () => SortDirection
返回根据列值自动推断的排序方向。
getSortingFn: () => SortingFn<TData>
getSortingFn: () => SortingFn<TData>
返回要为此列使用的已解析排序函数
getNextSortingOrder: () => SortDirection | false
getNextSortingOrder: () => SortDirection | false
返回下一个排序顺序。
getCanSort: () => boolean
getCanSort: () => boolean
返回此列是否可以排序。
getCanMultiSort: () => boolean
getCanMultiSort: () => boolean
返回此列是否可以多排序。
getSortIndex: () => number
getSortIndex: () => number
返回此列在排序状态中的索引位置
getIsSorted: () => false | SortDirection
getIsSorted: () => false | SortDirection
返回此列是否已排序。
getFirstSortDir: () => SortDirection
getFirstSortDir: () => SortDirection
返回排序此列时应使用的第一个方向。
clearSorting: () => void
clearSorting: () => void
将此列从表格的排序状态中移除
toggleSorting: (desc?: boolean, isMulti?: boolean) => void
toggleSorting: (desc?: boolean, isMulti?: boolean) => void
切换此列的排序状态。如果提供了 desc,它将强制排序方向为该值。如果提供了 isMulti,它将按比例多排序该列(如果已排序则切换)。
getToggleSortingHandler: () => undefined | ((event: unknown) => void)
getToggleSortingHandler: () => undefined | ((event: unknown) => void)
返回一个函数,用于切换此列的排序状态。这对于将点击处理程序附加到列标题非常有用。
sortingFns?: Record<string, SortingFn>
sortingFns?: Record<string, SortingFn>
此选项允许您定义自定义排序函数,这些函数可以通过其键在列的 sortingFn 选项中引用。示例
declare module '@tanstack/table-core' {
interface SortingFns {
myCustomSorting: SortingFn<unknown>
}
}
const column = columnHelper.data('key', {
sortingFn: 'myCustomSorting',
})
const table = useReactTable({
columns: [column],
sortingFns: {
myCustomSorting: (rowA: any, rowB: any, columnId: any): number =>
rowA.getValue(columnId).value < rowB.getValue(columnId).value ? 1 : -1,
},
})
declare module '@tanstack/table-core' {
interface SortingFns {
myCustomSorting: SortingFn<unknown>
}
}
const column = columnHelper.data('key', {
sortingFn: 'myCustomSorting',
})
const table = useReactTable({
columns: [column],
sortingFns: {
myCustomSorting: (rowA: any, rowB: any, columnId: any): number =>
rowA.getValue(columnId).value < rowB.getValue(columnId).value ? 1 : -1,
},
})
manualSorting?: boolean
manualSorting?: boolean
启用表格的手动排序。如果此值为 true,您将被期望在将数据传递给表格之前对其进行排序。如果您正在进行服务器端排序,这将很有用。
onSortingChange?: OnChangeFn<SortingState>
onSortingChange?: OnChangeFn<SortingState>
如果提供了此函数,则在 state.sorting 更改时,将使用 updaterFn 调用此函数。这将覆盖默认的内部状态管理,因此您需要完全或部分地在表格外部持久化状态更改。
enableSorting?: boolean
enableSorting?: boolean
启用/禁用表格的排序。
enableSortingRemoval?: boolean
enableSortingRemoval?: boolean
启用/禁用表格移除排序的功能。
enableMultiRemove?: boolean
enableMultiRemove?: boolean
启用/禁用移除多排序的功能
enableMultiSort?: boolean
enableMultiSort?: boolean
启用/禁用表格的多排序。
sortDescFirst?: boolean
sortDescFirst?: boolean
如果 true,则所有排序都将默认以降序作为其第一个切换状态。
getSortedRowModel?: (table: Table<TData>) => () => RowModel<TData>
getSortedRowModel?: (table: Table<TData>) => () => RowModel<TData>
此函数用于检索已排序的行模型。如果使用服务器端排序,则不需要此函数。要使用客户端排序,请将适配器导出的 getSortedRowModel() 传递给您的表格或实现自己的函数。
maxMultiSortColCount?: number
maxMultiSortColCount?: number
设置可以多排序的最大列数。
isMultiSortEvent?: (e: unknown) => boolean
isMultiSortEvent?: (e: unknown) => boolean
传递一个自定义函数,该函数将用于确定是否应触发多排序事件。该函数将接收来自排序切换处理程序的事件,并应返回 true 如果事件应触发多排序。
setSorting: (updater: Updater<SortingState>) => void
setSorting: (updater: Updater<SortingState>) => void
设置或更新 state.sorting 状态。
resetSorting: (defaultState?: boolean) => void
resetSorting: (defaultState?: boolean) => void
将 **排序** 状态重置为 initialState.sorting,或者可以传递 true 来强制默认的空白状态重置为 []。
getPreSortedRowModel: () => RowModel<TData>
getPreSortedRowModel: () => RowModel<TData>
返回在应用任何排序之前表格的行模型。
getSortedRowModel: () => RowModel<TData>
getSortedRowModel: () => RowModel<TData>
返回应用排序后表格的行模型。
您的每周 JavaScript 资讯。每周一免费发送给超过 10 万开发者。