import { useMemo } from 'react';
import { useRequest } from 'ice';
import { Message } from '@alifd/next';
import type { CombineService } from '@ahooksjs/use-request/lib/types';
interface tableConfigResult<T> {
dataSource: any[];
loading: boolean;
total: number;
fetch: (...args: T[]) => Promise<any>;
refresh: (...args: T[]) => Promise<any>;
}
const useTable = (service: CombineService<any, any>, options: any = {}): tableConfigResult<any> => {
const { request, data, loading, refresh } = useRequest(service, {
manual: true,
onSuccess: (res) => {
const { success, errorMsg } = res;
if (success) return;
Message.error(errorMsg || '请求失败');
},
onError: (e) => {
Message.error(e.message);
},
...options,
});
const fetch = (queryData, queryParams?): Promise<any> => {
const { pageNum, pageSize, spm, _bzb_pvid, changeId, ...otherQueryData } = queryData;
return request({ data: otherQueryData, pageNum, pageSize }, queryParams);
};
const { data: dataSource = [], totalCount: total = 0 } = useMemo(() => data || {}, [data]);
return { dataSource, fetch, loading, total, refresh };
};
export default useTable;```
封装通用hooks-------useTable
最新推荐文章于 2024-06-26 18:10:14 发布