繁体   English   中英

如何使用 react-leaflet 打开模式?

[英]How can I open a modal using react-leaflet?

我正在尝试使用库 react-leaflet ,当我们单击弹出窗口上的按钮时,我想打开一个模式,但我没有做到这一点。

这是我的代码:

import React from "react";
import { Map, TileLayer, Marker, Popup } from "react-leaflet";
import { defaultMarker } from "./defaultMarker";
import { popupContent, popupHead, popupText, okText } from "./popupStyles";
import "./Map.css";

const center = [51.505, -0.09];

const MapComp = () => {
  return (
    <Map style={{ width: "100%", height: "100vh" }} center={center} zoom={13}>
      <TileLayer
        url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
        attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
      />
      <Marker position={center} icon={defaultMarker}>
        <Popup className="request-popup">
          <button>Open Modal</button>
        </Popup>
      </Marker>
      }
    </Map>
  );
};

export default MapComp;

你可以在那里看到完整的代码:

https://codesandbox.io/s/how-to-style-the-react-leaflet-popup-forked-7yozy?file=/src/Map.js:0-788

当我单击弹出窗口并单击“打开模态”按钮时,我只是打开了一个模态

非常感谢 !

您可以使用react-bootstrap ,其中包含引导库或reactstrap的反应组件。 两者都可以更轻松地使用引导组件,否则您将不得不自己创建并操作 state。

这是react-bootstrap的示例:

安装库npm i react-bootstrap

创建模态组件:

function CustomModal({ show, onClose }) {
  return (
    <Modal show={show} onHide={onClose}>
      <Modal.Header closeButton>
        <Modal.Title>Modal heading</Modal.Title>
      </Modal.Header>
      <Modal.Body>Woohoo, you're reading this text in a modal!</Modal.Body>
      <Modal.Footer>
        <Button variant="secondary" onClick={onClose}>
          Close
        </Button>
        <Button variant="primary" onClick={onClose}>
          Save Changes
        </Button>
      </Modal.Footer>
    </Modal>
  );
}

在您的 Map 上导入您的自定义模态并处理其 state 以便能够在按下按钮时显示隐藏它

const MapComp = () => {
  const [show, setShow] = useState(false);

  const handleClose = () => setShow(false);

  return (
    <>
      <Map style={{ width: "100%", height: "100vh" }} center={center} zoom={13}>
        <TileLayer
          url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
          attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
        />
        <Marker position={center} icon={defaultMarker}>
          <Popup className="request-popup">
            <button onClick={() => setShow(true)}>Open Modal</button>
          </Popup>
        </Marker>
      </Map>
      <Modal show={show} onClose={handleClose} />
    </>
  );
};

演示

编辑

react-bootstrap库似乎存在错误。 当您打开模态然后关闭它时,map 会意外冻结,您无法与之交互。

我用reactstrap安装并复制了它,没有这样的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM