Skip to content

Commit 1680c37

Browse files
committed
refactor(table): add transformParams option to useTable and useHookTable for enhanced parameter handling
1 parent 2b77b60 commit 1680c37

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

packages/hooks/src/use-table.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,26 @@ export type TableConfig<A extends ApiFn, T, C> = {
6161
onFetched?: (transformed: TransformedData<T>) => MaybePromise<void>;
6262
/** transform api response to table data */
6363
transformer: Transformer<T, Awaited<ReturnType<A>>>;
64+
/**
65+
* transform params before sending to backend
66+
*
67+
* @param params formatted params
68+
* @returns transformed params
69+
*/
70+
transformParams?: (params: Parameters<A>[0]) => Parameters<A>[0];
6471
};
6572

6673
export default function useHookTable<A extends ApiFn, T, C>(config: TableConfig<A, T, C>) {
67-
const { apiFn, apiParams, getColumnChecks, getColumns, immediate = true, isChangeURL, transformer } = config;
74+
const {
75+
apiFn,
76+
apiParams,
77+
getColumnChecks,
78+
getColumns,
79+
immediate = true,
80+
isChangeURL,
81+
transformer,
82+
transformParams
83+
} = config;
6884

6985
const { endLoading, loading, startLoading } = useLoading();
7086

@@ -91,7 +107,11 @@ export default function useHookTable<A extends ApiFn, T, C>(config: TableConfig<
91107
startLoading();
92108

93109
try {
94-
const formattedParams = formatSearchParams(searchParams.current);
110+
let formattedParams = formatSearchParams(searchParams.current);
111+
112+
if (transformParams) {
113+
formattedParams = transformParams(formattedParams);
114+
}
95115

96116
if (isChangeURL) {
97117
setSearchParams(formattedParams as URLSearchParamsInit, { replace: true });

src/features/table/use-table.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export function useTable<A extends AntDesign.TableApiFn>(config: Config<A>) {
3131
onChange: onChangeCallback,
3232
pagination: paginationConfig,
3333
rowKey = 'id',
34+
transformParams,
3435
...rest
3536
} = config;
3637

@@ -103,7 +104,8 @@ export function useTable<A extends AntDesign.TableApiFn>(config: Config<A>) {
103104
pageSize: size,
104105
total: totalNum
105106
};
106-
}
107+
},
108+
transformParams
107109
});
108110

109111
// this is for mobile, if the system does not support mobile, you can use `pagination` directly
@@ -149,6 +151,7 @@ export function useTable<A extends AntDesign.TableApiFn>(config: Config<A>) {
149151
other = params;
150152
}
151153
}
154+
152155
updateSearchParams(other);
153156
}
154157

src/types/antd.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ declare namespace AntDesign {
3838

3939
type AntDesignTableConfig<A extends TableApiFn> = Pick<
4040
import('@sa/hooks').TableConfig<A, GetTableData<A>, TableColumn<TableDataWithIndex<GetTableData<A>>>>,
41-
'apiFn' | 'apiParams' | 'columns' | 'immediate' | 'isChangeURL'
41+
'apiFn' | 'apiParams' | 'columns' | 'immediate' | 'isChangeURL' | 'transformParams'
4242
> & {
4343
onChange?: (
4444
...args: TableOnChange

0 commit comments

Comments
 (0)