Files
easygoadmin-wiki/EasyGoAdmin_Gin_NaiveVue/zh/frontend/hooks-enums.md
T
2026-10-25 17:24:27 +08:00

55 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 9.18 Hooks 与枚举
:::tip 概述
`hooks/` 按 core/event/setting/web 分组沉淀组合式逻辑;`enums/` 定义前端常量枚举。两者都是"写一次、处处引用"的基础设施。
:::
## Hooks 分组
| 分组 | 代表 | 职责 |
|---|---|---|
| web | usePermission | 权限判定(v-if 场景,[9.7](/zh/frontend/permission.html)) |
| core | use-async | 异步状态管理(loading/error 包装) |
| event | 事件类 hooks | 监听与派发 |
| setting | designSetting 相关 | 主题/布局参数读写 |
| 根目录 | useTime / useOnline / useBattery / useDomWidth | 时间、网络状态、电量、宽度监听 |
## 枚举清单(enums/)
| 文件 | 枚举内容 |
|---|---|
| httpEnum.ts | HTTP 相关常量(结果类型、超时) |
| permissionsEnum.ts | 权限相关常量 |
| roleEnum.ts | 角色常量 |
| pageEnum.ts | 页面路径常量(BASE_LOGIN 等,守卫引用) |
| cacheEnum.ts | 缓存键常量 |
| breakpointEnum.ts | 响应式断点 |
| avatarEnum.ts | 头像相关 |
## 使用示例
```typescript
import { usePermission } from '@/hooks/web/usePermission';
import { PageEnum } from '@/enums/pageEnum';
const { hasPermission } = usePermission();
const loginPath = PageEnum.BASE_LOGIN;
```
## 编写新 hook 的规约
- 文件名 `use-*.ts`(kebab),导出同名函数
- 纯组合式:内部用 ref/computed/watch,不依赖组件实例才能运行的 API(或显式在 setup 调用)
- 通用才抽:两个以上页面用到再沉淀,单页面逻辑留页面内
## 枚举编写规约
- `as const` + 类型导出,避免 any
- 键名大写下划线,值按语义(字符串枚举为主)
- 与后端常量对齐的值(如权限通配码)注明来源,防两端漂移
## 相关
- [9.17 工具函数](/zh/frontend/utils.html)
- [附录 J 前端枚举速查](/zh/appendix/enums.html)