javascript 有条件激活材质UI工具提示?

brjng4g3  于 2023-05-05  发布在  Java
关注(0)|答案(4)|浏览(142)

我有以下使用Material UI的React组件:

const MyButton = ({ warningText }) => (
    <Tooltip title={warningText}>
        <Button>Do action</Button>
    </Tooltip>
)

目前,当warningText未定义时,会显示一个空的工具提示。相反,我不想显示任何工具提示。在这些情况下,是否有方法有条件地抑制工具提示?
当然,我可以使用if语句来不呈现工具提示组件,但在我看来,这会导致相当丑陋的代码。

fquxozlt

fquxozlt1#

应该是

<Tooltip title={warningText == null ? "" : warningText}>
        <Button>Do action</Button>
 </Tooltip>

文档说如果字符串长度为零,它将不会显示。
https://material-ui.com/api/tooltip/
工具提示标题。零长度的标题字符串从不显示。

30byixjq

30byixjq2#

如果您希望手动进行自定义,可以尝试使用以下解决方案:

根据documentation,您可以使用openprop和鼠标events手动处理它。
在下面的场景中,我们将使用state来设置当我们在element上输入鼠标时显示工具提示,我们还将使用text &&来Asserttext有一个值,这将防止当textundefined时显示工具提示。

const [showTooltip, setShowTooltip] = useState(false);
<Tooltip
    open={text && showTooltip}        
    onMouseEnter={() => { setShowTooltip(true) }}
    onMouseLeave={() => { setShowTooltip(false) }}
    placement="top" title={text}
>
    <div>
        {text}
    </div>
</Tooltip>
  • 请注意,mui-tooltip并不是一个完美的组件开始,也不是很直接,这个解决方案对我有效,但在你的情况下可能不起作用,我会尝试把它放出来,你可以尝试让它在你的端工作。
  • 如果你不喜欢,请留言,我会尽力帮助你 *
wixjitnu

wixjitnu3#

可以使用disableHoverListener的 prop 。

参考:https://mui.com/material-ui/api/tooltip/#:~:text=disableHoverListener

pod7payv

pod7payv4#

你应该看看https://material-ui.com/api/tooltip/
有以下选项

  • disableFocusListener
  • disableHoverListener
  • disableTouchListener
  • 互动

我认为interactive={true}应该最适合您的需求

<Tooltip title={warningText} interactive={!warningText}>...</Tooltip>

相关问题