5.24.9

Tooltip
文字提示

简单的文字提示气泡框。
使用import { Tooltip } from "antd";

何时使用

鼠标移入则显示提示,移出消失,气泡浮层不承载复杂文本和操作。

可用来代替系统默认的 title 提示,提供一个 按钮/文字/操作 的文案解释。

代码演示

Tooltip will show on mouse enter.

最简单的用法。

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code

支持显示、隐藏以及将箭头保持居中定位。

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code

我们添加了多种预设色彩的文字提示样式,用作不同场景使用。

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code
This text is inside a component with the necessary events exposed.

与自定义组件一起使用.

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code

位置有 12 个方向。

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code

当 Tooltip 贴边时,自动偏移并且调整箭头位置。当超出过多时,则一同滚出屏幕。

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code

通过设置 title={null} 或者 title="" 可以禁用 Tooltip。

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code

API

通用属性参考:通用属性

参数说明类型默认值
title提示文字ReactNode | () => ReactNode-

共同的 API

参数说明类型默认值版本
align该值将合并到 placement 的配置中,设置参考 dom-alignobject-
arrow修改箭头的显示状态以及修改箭头是否指向目标元素中心boolean | { pointAtCenter: boolean }true5.2.0
autoAdjustOverflow气泡被遮挡时自动调整位置booleantrue
color背景颜色string-4.3.0
defaultOpen默认是否显隐booleanfalse4.23.0
destroyTooltipOnHide关闭后是否销毁 Tooltipbooleanfalse
fresh默认情况下,Tooltip 在关闭时会缓存内容。设置该属性后会始终保持更新booleanfalse5.10.0
getPopupContainer浮层渲染父节点,默认渲染到 body 上(triggerNode: HTMLElement) => HTMLElement() => document.body
mouseEnterDelay鼠标移入后延时多少才显示 Tooltip,单位:秒number0.1
mouseLeaveDelay鼠标移出后延时多少才隐藏 Tooltip,单位:秒number0.1
overlayClassName卡片类名, 请使用 classNames={{ root: "" }} 替换string-
overlayStyle卡片样式, 请使用 styles={{ root: {} }} 替换React.CSSProperties-
overlayInnerStyle卡片内容区域的样式对象, 请使用 styles={{ body: {} }} 替换React.CSSProperties-
placement气泡框位置,可选 top left right bottom topLeft topRight bottomLeft bottomRight leftTop leftBottom rightTop rightBottomstringtop
trigger触发行为,可选 hover | focus | click | contextMenu,可使用数组设置多个触发行为string | string[]hover
open用于手动控制浮层显隐,小于 4.23.0 使用 visible为什么?booleanfalse4.23.0
zIndex设置 Tooltip 的 z-indexnumber-
onOpenChange显示隐藏的回调(open: boolean) => void-4.23.0

Semantic DOM

  • root
    5.23.0
    根元素 (包含箭头、内容元素)
  • body
    5.23.0
    内容元素

主题变量(Design Token)

组件 Token如何定制?
Token 名称描述类型默认值
zIndexPopup文字提示 z-indexnumber1070
全局 Token如何定制?

FAQ

为何 Tooltip 的内容在关闭时不会更新?

Tooltip 默认在关闭时会缓存内容,以防止内容更新时出现闪烁:

jsx
// `title` 不会因为 `user` 置空而闪烁置空
<Tooltip open={user} title={user?.name} />
no blink

如果需要在关闭时也更新内容,可以设置 fresh 属性(例如 #44830 中的场景):

jsx
<Tooltip open={user} title={user?.name} fresh />
no blink

为何在严格模式中有时候会出现 findDOMNode is deprecated 这个警告?

这是由于 rc-trigger 的实现方式导致的,rc-trigger 强制要求 children 能够接受 ref,否则就会 fallback 到 findDOMNode,所以 children 需要是原生 html 标签,如果不是,则需要使用 React.forwardRefref 透传到原生 html 标签。

为什么自定义子组件无法正常工作?

类似问题: #15909, #12812

请确保子元素能接受 onMouseEnteronMouseLeaveonPointerEnteronPointerLeaveonFocusonClick 事件。参考示例

placement 的行为逻辑是什么?

当屏幕空间足够时,会按照 placement 的设置进行弹层。当空间不足时则会取反向位置进行弹层(例如 top 不够时,会改为 bottomtopLeft 不够时会改为 bottomLeft)。单一方向如 top bottom left right 当贴边时进行自动位移:

shift

当设置为边缘对齐方向如 topLeft bottomRight 等,则会仅做翻转而不做位移。