feat: 完成TikTok短剧管理后台基础功能开发
本次提交搭建了完整的后台管理系统,包含: 1. 登录认证与权限校验体系 2. 工作台、短剧、用户、角色、人员、日志等全业务模块 3. 响应式布局与通用样式组件 4. 菜单动态过滤与路由权限控制 5. 移除了README中冗余的权限管理菜单项
This commit is contained in:
31
src/hooks/usePageData.ts
Normal file
31
src/hooks/usePageData.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import { fetchPage } from '../api/client';
|
||||
import type { PageData } from '../api/types';
|
||||
|
||||
export function usePageData<T>(url: string, enabled = true) {
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [data, setData] = useState<PageData<T>>({
|
||||
list: [],
|
||||
pagination: { page: 1, pageSize: 20, total: 0 },
|
||||
});
|
||||
|
||||
const load = async () => {
|
||||
if (!enabled) {
|
||||
return;
|
||||
}
|
||||
setLoading(true);
|
||||
try {
|
||||
setData(await fetchPage<T>(url));
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (enabled) {
|
||||
void load();
|
||||
}
|
||||
}, [url, enabled]);
|
||||
|
||||
return { data, loading, reload: load };
|
||||
}
|
||||
Reference in New Issue
Block a user