|
2 | 2 | import { useState } from "react"; |
3 | 3 | import { useDebouncedEffect } from "./useDebouncedEffect"; |
4 | 4 | import Loading from "@/utils/loading"; |
| 5 | +import { App } from "antd"; |
5 | 6 |
|
6 | 7 | export default function useFetchData<T>( |
7 | 8 | fetchFunc: (params?: any) => Promise<any>, |
8 | 9 | mapDataFunc: (data: any) => T = (data) => data as T |
9 | 10 | ) { |
| 11 | + const { message } = App.useApp(); |
10 | 12 | // 表格数据 |
11 | 13 | const [tableData, setTableData] = useState<T[]>([]); |
12 | 14 | // 设置加载状态 |
@@ -57,37 +59,40 @@ export default function useFetchData<T>( |
57 | 59 | const { keywords, filter, current, pageSize } = searchParams; |
58 | 60 | Loading.show(); |
59 | 61 | setLoading(true); |
60 | | - const { data } = await fetchFunc({ |
61 | | - ...filter, |
62 | | - keywords, |
63 | | - type: getFirstOfArray(filter?.type) || undefined, |
64 | | - status: getFirstOfArray(filter?.status) || undefined, |
65 | | - tags: filter?.tags?.length ? filter.tags.join(",") : undefined, |
66 | | - page: current - 1, |
67 | | - size: pageSize, |
68 | | - }); |
69 | | - setPagination((prev) => ({ |
70 | | - ...prev, |
71 | | - total: data?.totalElements || 0, |
72 | | - })); |
73 | | - let result = []; |
74 | | - if (mapDataFunc) { |
75 | | - result = data?.content.map(mapDataFunc) ?? []; |
| 62 | + try { |
| 63 | + const { data } = await fetchFunc({ |
| 64 | + ...filter, |
| 65 | + keywords, |
| 66 | + type: getFirstOfArray(filter?.type) || undefined, |
| 67 | + status: getFirstOfArray(filter?.status) || undefined, |
| 68 | + tags: filter?.tags?.length ? filter.tags.join(",") : undefined, |
| 69 | + page: current - 1, |
| 70 | + size: pageSize, |
| 71 | + }); |
| 72 | + setPagination((prev) => ({ |
| 73 | + ...prev, |
| 74 | + total: data?.totalElements || 0, |
| 75 | + })); |
| 76 | + let result = []; |
| 77 | + if (mapDataFunc) { |
| 78 | + result = data?.content.map(mapDataFunc) ?? []; |
| 79 | + } |
| 80 | + setTableData(result); |
| 81 | + console.log(data, result.map(mapDataFunc)); |
| 82 | + } catch (error) { |
| 83 | + message.error("数据获取失败,请稍后重试"); |
| 84 | + } finally { |
| 85 | + Loading.hide(); |
| 86 | + setLoading(false); |
76 | 87 | } |
77 | | - setTableData(result); |
78 | | - Loading.hide(); |
79 | | - setLoading(false); |
80 | | - console.log(data); |
81 | | - |
82 | | - console.log(data, result.map(mapDataFunc)); |
83 | 88 | } |
84 | 89 |
|
85 | 90 | useDebouncedEffect( |
86 | 91 | () => { |
87 | 92 | fetchData(); |
88 | 93 | }, |
89 | 94 | [searchParams], |
90 | | - 500 |
| 95 | + searchParams?.keywords ? 500 : 0 |
91 | 96 | ); |
92 | 97 |
|
93 | 98 | return { |
|
0 commit comments