封装通用hooks-------useTable

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;```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值