首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用户点击弹出窗口中的按钮后关闭弹出窗口react-leaflet

在用户点击弹出窗口中的按钮后关闭弹出窗口react-leaflet
EN

Stack Overflow用户
提问于 2018-08-30 04:41:28
回答 3查看 3.7K关注 0票数 3

所以基本上是想自定义关闭react-leaflet弹出组件,接缝与原生API leaflet没有太大问题,但react-leaflet的react组件我找不到解决方案。

EN

回答 3

Stack Overflow用户

发布于 2019-02-26 04:59:42

目前,我发现关闭弹出窗口的唯一方法是:

代码语言:javascript
复制
constructor(props){
    super(props);
    this.popup = React.createRef();
}

// the magic
closePopusOnClick(){
    this.popup.current.leafletElement.options.leaflet.map.closePopup();
}

render(){
    return <Marker position={[this.props.lat, this.props.lng]}>
        <Popup ref={this.popup}>
            <Button onClick={this.closePopusOnClick}>Close popup</Button>
        </Popup>
    </Marker>;
}

希望它能帮上忙!

票数 3
EN

Stack Overflow用户

发布于 2020-11-26 18:06:01

"react-leaflet": "^3.0.2"中,我设法用以下命令关闭了弹出窗口:

代码语言:javascript
复制
popupRef.current._closeButton.click()

与未来的Popup.close()方法相比并不是很好,它必须开箱即用,但可以完成工作……

票数 1
EN

Stack Overflow用户

发布于 2019-06-03 18:08:02

我最终得到了一个类似于Luca's Answer的解决方案,所以我想我也应该把它作为一个答案。在移动或缩放地图时,我需要关闭所有弹出窗口,结果如下:

代码语言:javascript
复制
import React, { useRef } from "react";
import { Map } from "react-leaflet"

export default () => {
  const mapRef = useRef(null);

  const closePopups = () => {
    mapRef.current.leafletElement.closePopup();
  };

  const handleOnDragend = e => {
    closePopups();
  };

  const handleOnZoomend = e => {
    closePopups();
  };

  if (typeof window === 'undefined') {
    return null;
  }

  return (
      <Map
        ref={mapRef}
        onDragend={handleOnDragend}
        onZoomend={handleOnZoomend}
      >
      </Map>
  )
}

但是,可以对其进行扩展,以便任何东西都可以调用closePopups方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52085768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档