Skip to content

useTooltip

@astryxdesign/core v0.7.1 · useTooltip

使用方法 ​

悬停 / 聚焦触发的文字提示。它在 useLayer 之上加了悬停意图、键盘焦点处理和 aria-describedby 关联。触发器形态特殊、不想套外壳组件时用它。

ts
import { useTooltip } from '@astryx-vue/core/Tooltip'

把 triggerRef 绑到要用提示的元素上:hook 会挂指针和焦点事件,并把自己的 ID 追加到 aria-describedby(元素原有的 ID 保留)。气泡自己渲染,把 contentProps 摊上去:

vue
<script setup lang="ts">
import { useTooltip } from '@astryx-vue/core/Tooltip'

const tooltip = useTooltip({ delay: 120 })
</script>

<template>
  <button :ref="tooltip.triggerRef" type="button">
    Hover me
  </button>
  <Teleport to="body">
    <div
      v-show="tooltip.isOpen"
      :ref="tooltip.contentRef"
      v-bind="tooltip.contentProps"
      :style="tooltip.contentStyle"
    >
      Helpful text
    </div>
  </Teleport>
</template>

contentProps 里有 role="tooltip"、ID,以及指针移入气泡时保持显示的处理函数。气泡的 position: fixed 由你自己写,contentStyle 只给量出来的坐标。

建议 ​

指引做法
Do图标按钮、被截断的文字、缩写、紧凑控件这类很短的文字说明用它。
Do标准的包裹式用法优先用 Tooltip 组件;触发器不是简单子元素时再用 hook。
Don't不要往提示里放交互内容:那种场景用 Popover 或 HoverCard。

示例 ​

用 useTooltip 搭提示,开关完全由代码控制。

Tooltip — Hook Usage

用 useTooltip 搭提示,开关完全由代码控制。