这是一个创建于 848 天前的主题,其中的信息可能已经有所发展或是发生改变。
---- 我在 ts 中,使用 antd Table 的 onChange 方法
//我把它的参数都取出来了,实际上我只想用到 sorter 参数
onChange={(
pagination: TablePaginationConfig,
filters: Record<string, FilterValue | null>,
sorter: SorterResult<DatabaseType> | SorterResult<DatabaseType>[],
extra: TableCurrentDataSource<DatabaseType>
) => {
handleTableChange(sorter);
}}
// 分页、过滤、排序改变时触发,我使用 sorter 发现 sorter?.field 、sorter?.order 都会类型报错
function handleTableChange(
sorter: SorterResult<DatabaseType> | SorterResult<DatabaseType>[]
) {
if (
sorter?.field &&
sorter?.order &&
(sorter.field !== params.sortField || sorter.order !== params.sortOrder)
) {
const sortField = sorter.field as string;
const sortOrder = sorter.order as string;
setParams((params: any) => ({
...params,
sortField: sortField,
sortOrder: sortOrder,
page: 1,
}));
}
}
|
|
1
liuw666 2022-09-01 16:50:39 +08:00
我是重新定义了一个 sorter 的类型,antd 默认的太复杂。没有必要。 其实就两个字段而已 interface TableSorter { field?: string; order?: string; }
|
|
|
2
particlec 2022-09-01 16:54:47 +08:00
//但是我重新定义完后 onChange ,会报红
onChange={( pagination: TablePaginationConfig, filters: Record<string, FilterValue | null>, sorter: TableSorter, extra: TableCurrentDataSource<DatabaseType> ) => { handleTableChange(sorter); }}
|