particlec
0.01D
V2EX  ›  问与答

遇到一个 TypeScript 的问题,请大佬指点

  •  
  •   particlec · Sep 1, 2022 · 1259 views
    This topic created in 1375 days ago, the information mentioned may be changed or developed.
    ---- 我在 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,
    }));
    }
    }
    nowtg
        1
    nowtg  
       Sep 1, 2022
    我是重新定义了一个 sorter 的类型,antd 默认的太复杂。没有必要。 其实就两个字段而已
    interface TableSorter {
    field?: string;
    order?: string;
    }
    particlec
        2
    particlec  
    OP
       Sep 1, 2022
    //但是我重新定义完后 onChange ,会报红

    onChange={(
    pagination: TablePaginationConfig,
    filters: Record<string, FilterValue | null>,
    sorter: TableSorter,
    extra: TableCurrentDataSource<DatabaseType>
    ) => {
    handleTableChange(sorter);
    }}
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5220 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 05:58 · PVG 13:58 · LAX 22:58 · JFK 01:58
    ♥ Do have faith in what you're doing.