Skip to content

Composables ​

可复用组合逻辑在 admin/src/hooks/。下列导出名称均来自源码文件。

一览 ​

导出文件用途
useListPageuseListPage.ts列表页:分页、搜索、删除、批量删除、状态切换
usePagingusePaging.ts更底层的分页加载(pager + getLists)
useFormDialoguseFormDialog.ts新增/编辑弹窗:visible、表单、提交
useDictOptionsuseDictOptions.ts批量拉字典/下拉选项
useDebounceRequestuseDebounceRequest.ts异步请求防抖(默认 300ms)
useLockFnuseLockFn.ts异步锁,防止重复提交
useWatchRouteuseWatchRoute.ts路由变化时立即并持续回调
useRealtimeFallbackPollinguseRealtimeFallbackPolling.ts实时通道断开时回退轮询
useMultipleTabs(default)useMultipleTabs.ts多标签增删与当前 tab

常用模式 ​

列表页 — 传入 fetchFn 与可选 deleteFn / batchDeleteFn / updateStatusFn:

ts
const { list, loading, pagination, searchForm, getList, resetSearch, handleDelete } = useListPage({
  fetchFn: (params) => someApi.getList(params),
  deleteFn: (id) => someApi.remove(id),
  defaultSearchForm: { keyword: '', status: '' },
})

内部用 page / limit,并从 res.data.list、res.data.pagination.total 取值。

分页钩子 — usePaging({ fetchFun, params, size }) 返回 pager、getLists、resetPage、resetParams。

表单弹窗 — useFormDialog 根据表单是否带 id 走 createFn / updateFn,处理校验与成功提示。

多标签 — useMultipleTabs 依赖 openMultipleTabs 设置与 multipleTabs store;布局顶栏使用它驱动标签列表。

写新列表页时优先 useListPage;已有复杂自定义分页再落到 usePaging。不要在 hook 里写死业务 API 路径,由调用方注入函数。

基于 MIT 许可发布