Antd的Tooltip默认是鼠标放在内容上就会自动显示,现在想只有文字溢出省略时才显示Tooltip,要怎么做呢?很常见的一种方式是判断文字溢出然后通过visible属性去控制显隐,这里就需要声明一个标识状态去控制,如果有多个Tooltip那不是要声明多个状态?很麻烦!
这里推荐一种优雅的写法:
// 控制Tooltip显隐
function showToolTip(e) {
if (e.target.clientWidth >= e.target.scrollWidth) {
e.target.style.pointerEvents = "none"; // 阻止鼠标事件
}
}
<Tooltip
title={node.name}
color="#fff"
overlayInnerStyle={{ color: "#000" }}
onMouseEnter={showToolTip}
>
<span
style={{
display: "inline-block",
width: "100%",
overflow: "hidden",
whiteSpace: "nowrap",
textOverflow: "ellipsis",
fontSize: "20px",
}}
>
{node.name}
</span>
</Tooltip>
这里结合onMouseEnter事件,在事件中判断内容宽≥内容滚动宽度就去掉鼠标事件。
怎么样?是不是很优雅!
博客介绍了如何优雅地控制Antd的Tooltip组件,使其在文字内容溢出时才显示。通过监听onMouseEnter事件,判断内容宽度是否大于滚动宽度来控制Tooltip的显隐,避免了为每个Tooltip声明单独的状态,简化了代码维护。这种方法提供了一种简洁的解决方式,适用于需要动态控制Tooltip显示场景。
873

被折叠的 条评论
为什么被折叠?



