# Hover 提示统一经验
更新日期:2026-04-30
## 背景
项目已经提取了共享 hover 提示组件,但应用 UI 中仍散落着原生 `title`、`data-tooltip`、局部 CSS tooltip 和直接使用 TDesign `Tooltip` 的写法。
这类分散实现会导致样式、延迟、层级、可访问性和测试行为不一致,也容易在新功能里继续扩散。
## 需求边界
本次统一的是“应用 UI 的视觉 hover 提示”,不是机械删除所有 `title`。
需要统一:
- 按钮、图标、菜单、工具栏、状态徽章、素材库、AI 输入栏、属性面板等应用 UI hover 文案。
- 原生 DOM `title`、`data-tooltip`、局部 CSS tips。
- 组件层直接引入 `tdesign-react` 的 `Tooltip`。
- `ToolButton title` 的新增使用。
暂不统一:
- Markdown/用户内容渲染出来的链接、图片语义 `title`。
- TDesign 表单 `tips`,它是静态说明文案,不是 hover 提示。
## 组件规则
- 简短纯文本提示使用 `HoverTip`。
- 富内容、需要鼠标停留或可交互内容的 hover 浮层使用 `HoverCard`。
- `ToolButton title` 只作为兼容入口保留,新代码使用 `tooltip`。
- 共享封装内部可以使用 TDesign `Tooltip`,业务组件不要直接引入。
- 测试容易 mock `../shared` 聚合导出时,优先从 `../shared/hover` 引入 `HoverTip`,减少 mock 破坏面。
## 迁移模式
### DOM title
```tsx
```
### ToolButton
```tsx
}
aria-label="下载"
tooltip="下载"
/>
```
### 条件提示
```tsx
{model.label}
```
## 守卫脚本经验
不要只靠简单正则扫描 JSX。
`onClick={() => ...}` 这类属性里包含 `>`,如果用 `