react-tooltip
很棒,但我遇到了条件渲染组件的问题。
我有一个刷新图标,仅在true
props.refreshImages
时显示:
顶栏.js
import React from 'react'
export default function Topbar (props) {
return (
<div>
{props.refreshImages &&
<i data-tip="Refresh the images" className="fas fa-sync-alt" ></i>}
</div>
)
}
应用.js
import React from 'react'
import Topbar from './Topbar'
import ReactTooltip from 'react-tooltip'
export default function App() {
return (
<ReactTooltip />
<Topbar refreshImages={true}/>
)
}
简化示例。但是当刷新图标被隐藏并再次显示(props.refreshImages
false
然后true
(时,工具提示不会显示。
我已经尝试将<ReactTooltip />
移动到Topbar 中.js并在每次渲染上运行ReactTooltip.rebuild((,但没有一个有效。对于props.refreshImages
,我实际上正在使用Redux。
提前感谢您的帮助。
您需要使用 ReactTooltip.rebuild 重新构建工具提示,发布渲染后而不是在渲染之前。
假设你正在使用带有钩子的功能组件,你可以使用 useEffect 钩子来实现
export default function App(props) {
useEffect(() => {
ReactTooltip.rebuild();
}, [props.refreshImages])
return (
<ReactTooltip />
<Topbar refreshImages={props.refreshImages}/>
)
}
或者使用类组件,您将在componentDidUpdate
中编写逻辑
componentDidUpdate(prevProps) {
if(prevProps.showItem !== this.props.showItem) {
ReactTooltip.rebuild();
}
}
示例演示
ReactTooltip.rebuild((;
在组件中添加此函数,每当状态更新时,函数将调用并重建工具提示