2019-10-18
描述
渲染一个信息提示组件。
- 使用
React.useState()
hook 创建一个默认值为false
的状态变量show
- 返回一个包含了两个
<div>
的<div>
元素,他们分别用于显示提示和传递给组件的children
- 监听
onMouseEnter
和onMouseLeave
方法,分别用于show
变量的切换 - 当然,你也可以直接使用 CSS 交互 - 信息提示 来实现
实现
.tooltip {
position: relative;
background: rgba(0, 0, 0, 0.7);
color: white;
visibility: hidden;
padding: 5px;
border-radius: 5px;
}
.tooltip-arrow {
position: absolute;
top: 100%;
left: 50%;
border-width: 5px;
border-style: solid;
border-color: rgba(0, 0, 0, 0.7) transparent transparent;
}
function Tooltip({ children, text, ...rest }) {
const [show, setShow] = React.useState(false);
return (
<div>
<div className="tooltip" style={show ? { visibility: 'visible' } : {}}>
{text}
<span className="tooltip-arrow" />
</div>
<div {...rest} onMouseEnter={() => setShow(true)} onMouseLeave={() => setShow(false)}>
{children}
</div>
</div>
);
}
使用
ReactDOM.render(
<Tooltip text="Simple tooltip">
<button>Hover me!</button>
</Tooltip>,
document.getElementById('root')
);