javascript - React-tooltip 不显示在条件渲染上
问题描述
react-tooltip
很棒,但是我遇到了条件渲染组件的问题。
我有一个刷新图标,只显示什么props.refreshImages
时候true
:
顶栏.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
isfalse
和 then 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();
}
}
推荐阅读
- arrays - 哪个最适合点列表:点结构数组还是二维数组?
- c# - 如何使用 SpecFlow 使用不同的输入数据多次运行相同的场景?
- excel - VBA 粘贴特殊失败问题
- c++ - 当一个 try-catch 块与类似 Either 的 monad 结合时,可以解释为 monad 吗?
- node.js - 为什么 AWS Elastic Beanstalk 在运行 `assets:precomile` 时部署失败,因为它在 SSH 上运行时“进程内存不足”?
- excel - 使用 Excel VBA 和 InternetExplorer 提交表单和阅读结果
- java - 静态内容不会在 Spring Boot 应用程序中加载
- python - 如何使用列表设置熊猫数据框的样式?
- svg - 如何获取 tspan 或 text svg 元素的计算 y 值?
- jekyll - 编辑 Jekyll 主题以用于 Github Pages