🐜
AntDesignのTooltipでdisabled的な事をしたい
訂正:titleに空文字渡せばdisabledみたいになります
<Tooltip title="">
{children}
</Tooltip>
↓↓↓↓↓↓↓↓ 誤りの記事 ↓↓↓↓↓↓↓↓↓↓↓↓↓
結論
trigger
のpropsに''
を渡すとTooltipが表示されなくなるハック的なやり方です。
<Tooltip trigger={disabled ? '' : 'hover'}>
{children}
</Tooltip>
↓こんな感じ
import React from 'react'
import { Tooltip as AntTooltip, TooltipProps } from 'antd'
type Props = { disabled: boolean } & TooltipProps
const Tooltip: React.FC<Props> = ({ disabled, children, trigger, ...props }) =>
<AntTooltip
{...props}
trigger={disabled ? '' : trigger}
>
{children}
</AntTooltip>
課題
Tooltipにdisabled的なpropsが存在しない
Buttonコンポーネントの様にdisabledを指定して、特定の条件の時だけtooltipが表示されないようにしたい!
しかし、AntdのTooltipのAPI部分を見る限り、その様なものはない。
open propは違う
openなどはtrueにするとtooltipを表示するpropなので、
この条件の時は何をしても表示しないみたいな事ができない。
現状ではtriggerでハックできる
triggerに''
を渡すとTooltipの表示を防ぐ事を利用して、下記の様なラッパーコンポーネントを作ったりして一応は対策が可能…だが。
ハック的なやり方なので、antdのアップデートで急にできなることも考慮して使う必要がある。
import React from 'react'
import { Tooltip as AntTooltip, TooltipProps } from 'antd'
type Props = { disabled: boolean } & TooltipProps
const Tooltip: React.FC<Props> = ({ disabled = false, children, trigger, ...props }) =>
<AntTooltip
{...props}
trigger={disabled ? '' : trigger}
>
{children}
</AntTooltip>
Discussion