javascript - React - 我如何关闭所有其他工具提示?
问题描述
我目前有一个从工作中提供给我的工具提示组件,一切都很好,所以我制作了一个工具提示包装器来满足额外的要求。
问题是当我点击另一个时,我想关闭工具提示的所有其他实例。我已经为窗口添加了一个单击事件侦听器,因此每当我单击 else ware 时,工具提示的任何实例都会关闭。我遇到的问题是,handleWindowClick
当我单击另一个工具提示时,此事件不会触发,因此我能够一次打开多个工具提示。当要求是,每当打开一个工具提示时,另一个会关闭,因此一次只打开一个工具提示。
import { Tooltip } from "Tooltip";
import React, { Component } from "react";
export default class TooltipWrapper extends Component {
constructor() {
super();
this.handleWindowClick = this.handleWindowClick.bind(this);
this.toggleTooltip = this.toggleTooltip.bind(this);
this.onTooltipClosed = this.onTooltipClosed.bind(this);
this.state = {
show: false
};
}
componentDidMount() {
window.addEventListener('click', this.handleWindowClick);
}
componentWillUnmount() {
window.removeEventListener('click', this.handleWindowClick);
}
toggleTooltip() {
this.setState({
show: !this.state.show
});
}
handleWindowClick(event) {
this.setState({
show: false
});
}
onTooltipClosed() {
this.setState({
show: false
});
}
render() {
return (
<Tooltip
open={this.state.show}
tip={this.props.tip}
position="bottom"
closeButton="visible"
onClose={this.onTooltipClosed}
>
<div onClick={this.toggleTooltip}>{this.props.children}</div>
</Tooltip>
);
}
}
解决方案
也许将点击监听器添加到正文可能会对您有所帮助,请尝试以下操作:
document.body.addEventListener('click', this.onClickBody);
推荐阅读
- python - ValueError:无法将字符串转换为浮点数:'86,5484466552734'
- python - 用返回覆盖保存模型 Django 保存方法
- date - 在 Excel 表单上设置日期格式
- javascript - 在引导程序中使用 mx-auto 时,Img 标签未以 col 为中心
- wordpress - ACF:在主循环之外显示值
- ios - 如何从相机胶卷中获取仅使用设备相机(前后)拍摄的图像?(iOS)
- azure-data-factory - 使用 Azure 数据工厂将 Web 活动输出加载到 SQL 表中
- javascript - 如何从 JSON 动态创建 Bootstrap 表
- python - 使用 OMPython 在 OpenModelica 中进行参数化扫描
- javascript - 仅显示 Google App Script 中的最后 12 行