У меня есть компонент, в котором я отображаю некоторые кнопки. Каждая кнопка должна иметь свою подсказку. Я бы хотел, чтобы всплывающая подсказка появлялась, когда я: кнопка наведения. Но так как моя всплывающая подсказка может содержать не только текст, я не могу использовать такие вещи, как воздушный шар или создавать его только с помощью CSS.
Идея состоит в том, чтобы использовать ответную привязь, чтобы привязать мой собственный компонент всплывающей подсказки к кнопке. Но тогда я должен справиться с этим, если при наведении курсора на кнопку появляется всплывающая подсказка. Поэтому я хочу использовать реагирующий портал для перемещения всплывающей подсказки внутри моего компонента кнопки, чтобы иметь возможность стилизовать всплывающую подсказку в соответствии с ее фактическим родителем.
Это идея, которую я уже придумал, но она не работает как есть.
export const Bar: React.StatelessComponent<IBarProps> = (props) => {
const { button1, button2} = props;
return (
<div>
<TetherComponent
...
>
<Button
ref={button1ref} //???
...(some props)
>
{button1.text}
</Button>
{
createPortal(
<tooltip>button1.tooltipText</tooltip>,
button1ref)
}
</TetherComponent>
<TetherComponent
...
>...the same with second button
</TetherComponent>
</div>
)}
где всплывающая подсказка - просто React.StatelessComponent, а кнопка - просто React.PureComponent.
Я обычно зацикливаюсь на проблеме, что Button - это JSX.Element, а не Element, поэтому я не могу использовать его в качестве целевого элемента на портале. Другое дело, что я не уверен, как использовать ref в этом случае и не лучше ли использовать id.
Я открыт для любой идеи.