antd toolTip 的title内容是一个ul,鼠标悬浮上去会先出现正确内容,然后再出现[object object]如何解决
时间: 2024-01-02 12:01:50 浏览: 99
使用CSS content的attr实现鼠标悬浮提示(tooltip)效果
出现先正确显示内容,然后再出现 `[object object]` 的问题,可能是因为 `Tooltip` 组件渲染时会先展示一个默认的 `title`,然后再根据实际的 `title` 进行更新。
为了解决这个问题,你可以在 `Tooltip` 的 `visible` 属性变为 `true` 时,手动触发一次 `Tooltip` 的更新,让它显示正确的 `title`。
具体做法是,在 `Tooltip` 的 `onVisibleChange` 回调函数中,判断 `visible` 参数的值是否为 `true`,如果是,则将 `ul` 元素对象转换为字符串类型的值,并将它赋值给 `title` 属性;然后,手动调用 `Tooltip` 的 `updateTooltipVisible` 方法进行更新。
示例代码如下:
```jsx
import { Tooltip } from 'antd';
import ReactDOMServer from 'react-dom/server';
import { useRef } from 'react';
const ul = (
<ul>
<li>item 1</li>
<li>item 2</li>
</ul>
);
const TooltipWithUlTitle = () => {
const tooltipRef = useRef(null);
const handleVisibleChange = (visible) => {
if (visible) {
const title = ReactDOMServer.renderToString(ul);
tooltipRef.current.setState({ title }, () => {
tooltipRef.current.updateTooltipVisible(visible);
});
}
};
return (
<Tooltip title="" ref={tooltipRef} onVisibleChange={handleVisibleChange}>
Hover me
</Tooltip>
);
};
```
这样,当鼠标悬浮在 `Tooltip` 上时,就会先正确显示 `ul` 元素对象的内容,然后再更新为正确的 `title`,避免了出现 `[object object]` 的问题。
阅读全文