refactor: 重构项目接口与API调用体系,统一类型管理

1.  合并拆分的API类型定义到统一的api/interface.ts文件
2.  删除旧的api/client.ts与api/types.ts文件
3.  重构所有页面与组件的API调用方式,统一使用api/index.ts导出的接口
4.  调整组件文件结构,将分散的组件按模块整理
5.  统一类型导入路径,移除冗余的类型重复定义
This commit is contained in:
2026-07-02 14:57:06 +08:00
parent e160476ecf
commit 3451d373bc
54 changed files with 1106 additions and 930 deletions

5
src/hooks/interface.ts Normal file
View File

@@ -0,0 +1,5 @@
import type { PageData, PageQuery } from "../api";
export type { PageData, PageQuery };
export type PageFetcher<T> = (query: PageQuery) => Promise<PageData<T>>;

View File

@@ -1,9 +1,4 @@
import type { PageData } from '../api/types';
type PageQuery = {
page: number;
pageSize: number;
};
import type { PageData, PageQuery } from "./interface";
export function resolvePageData<T>(
response: PageData<T>,

View File

@@ -1,14 +1,8 @@
import { useEffect, useState } from "react";
import { fetchPage } from "../api/client";
import type { PageData } from "../api/types";
import type { PageData, PageFetcher, PageQuery } from "./interface";
import { resolvePageData } from "./pageData";
type PageQuery = {
page: number;
pageSize: number;
};
export function usePageData<T>(url: string, enabled = true) {
export function usePageData<T>(fetcher: PageFetcher<T>, enabled = true) {
const [loading, setLoading] = useState(false);
const [pageQuery, setPageQuery] = useState<PageQuery>({
page: 1,
@@ -25,7 +19,7 @@ export function usePageData<T>(url: string, enabled = true) {
}
setLoading(true);
try {
const response = await fetchPage<T>(url, query);
const response = await fetcher(query);
setData(resolvePageData(response, query));
} finally {
setLoading(false);
@@ -40,7 +34,7 @@ export function usePageData<T>(url: string, enabled = true) {
if (enabled) {
void load(pageQuery);
}
}, [url, enabled, pageQuery.page, pageQuery.pageSize]);
}, [fetcher, enabled, pageQuery.page, pageQuery.pageSize]);
return {
data,