# TipStore API 文档 本文档由 `DeepSeek R1` 模型生成并微调。 --- ## 类描述 `TipStore` 是提示框的集中管理器,提供全局访问和控制提示组件的能力。所有通过 `` 组件注册的实例会自动加入静态 `list` 容器,支持通过 ID 精准控制特定提示框。 --- ## 核心方法说明 ### `TipStore.get` ```typescript function get(id: string): TipStore | undefined; ``` **静态方法**:通过 ID 获取已注册的提示框控制器 | 参数 | 类型 | 必填 | 说明 | | ---- | -------- | ---- | ---------------- | | `id` | `string` | 是 | 提示框的唯一标识 | **返回值**:找到返回实例,否则返回 `undefined` --- ### `TipStore.use` ```typescript function use(id: string, data: TipExpose): TipStore; ``` **静态方法**:注册提示框实例到全局管理器(通常在组件内部使用) | 参数 | 类型 | 必填 | 说明 | | ------ | ----------- | ---- | ----------------------- | | `id` | `string` | 是 | 提示框的唯一标识 | | `data` | `TipExpose` | 是 | 来自 Tip 组件的暴露接口 | --- ### `drawTip` ```typescript function drawTip(text: string, icon?: AllIds | AllNumbers): void; ``` **显示提示内容**(支持带图标的提示) | 参数 | 类型 | 必填 | 说明 | | ------ | ---------------------- | ---- | ------------------------------- | | `text` | `string` | 是 | 提示文字内容 | | `icon` | `AllIds \| AllNumbers` | 否 | 图标资源 ID(字符串或数字形式) | **特性**: - 自动触发淡入动画 - 3 秒无操作后自动淡出 - 重复调用会重置计时器 --- ## 使用示例 ### 基础提示 ```typescript // 获取预先注册的提示框 const tip = TipStore.get('item-get-tip'); // 显示纯文本提示 tip?.drawTip('获得金币 x100'); // 显示带图标的提示 tip?.drawTip('获得 传说之剑', 'legend_sword'); ``` ### 全局广播提示 ```typescript // 向所有提示框发送通知 TipStore.list.forEach(store => { store.drawTip('系统将在5分钟后维护', 'warning'); }); ``` ### 动态内容提示 ```typescript // 组合动态内容 const showDamageTip = (damage: number) => { TipStore.get('combat-tip')?.drawTip( `造成 ${damage} 点伤害`, damage > 1000 ? 'critical_hit' : 'normal_hit' ); }; ``` --- ## 生命周期管理 ### 组件注册流程 ```tsx // 在组件定义时注册实例 ; // 在业务逻辑中调用 const showQuestComplete = () => { TipStore.get('quest-tip')?.drawTip('任务「勇者的试炼」完成!'); }; ``` --- ## 注意事项 1. **自动清理机制** 组件卸载时自动注销实例,跨场景访问时需确保目标组件已挂载 2. **错误处理** 建议封装安全访问方法: ```typescript const safeDrawTip = (id: string, text: string) => { const instance = TipStore.get(id); if (!instance) { console.error(`Tip ${id} not registered`); return; } instance.drawTip(text); }; ``` 3. **动画队列** 连续调用时会中断当前动画,建议重要提示添加延迟: ```typescript tip.drawTip('第一条提示'); setTimeout(() => { tip.drawTip('第二条重要提示'); }, 3200); // 等待淡出动画结束 ```