【发布时间】:2019-08-13 10:04:04
【问题描述】:
我有一张带有一些标记的“传单反应”地图。单击标记时,将打开一个弹出窗口。当您单击离开或关闭弹出窗口时,我需要知道何时关闭,以便判断它是否打开。
标记生成看起来像下面的代码。 Marker 和 Popup 来自“react-leaflet”,SiteForm 是我的代码。
var markers = this.props.sites.map((item, i) => {
<Marker icon={icon} key={i} position={{ lng: co[0], lat: co[1] }}>
<Popup>
<SiteForm item={item} />
</Popup>
</Marker>
}
在 Siteform 的 componentDidMount 中,我可以判断何时打开了弹出窗口,但关闭弹出窗口时不会触发 componentWillUnmount。
我尝试过扩展 Marker,但这是不好的做法,而且我无法从 Marker Symbol 扩展。我也尝试将 Popup 包装在一个组件中,但是当页面加载未打开弹出窗口时,componentDidMount 在每个标记上运行。
【问题讨论】:
-
您可以为弹出窗口或标记提供可选属性
onClose: () => void -
将 onClose={this.closePopup} 添加到
或 不会调用函数 this.closePopup
标签: javascript reactjs leaflet react-leaflet