React Leaflet 弹出窗口不适用于移动设备

React Leaflet popups not working on mobile devices

我在应用程序中使用 react-leaflet,它按预期工作,除非它是从移动设备(物理设备和开发工具)查看的。在移动设备上,弹出窗口会出现并在大约 0.2 秒后立即消失。

一些注意事项

这里是 CodeSandbox 中重复的问题。 如果点击按钮弹出浏览器window,在开发者工具中将其切换为移动设备查看,然后刷新页面,就可以看到发生了什么。

我的组件如下所示:

  export const MapView: React.FC<IMapViewProps> = ({
  ...
}) => {
 
  const Markers = data.map(({ location, name, id, events }) => (
    <Marker
      position={[location.lat, location.lon]}
      key={id}
      eventHandlers={{
        click: () => {
          console.log("clicked"); // THIS FIRES TWICE
        },
      }}
    >
      <Popup>
        <span>{name}</span>
      </Popup>
    </Marker>
  ));
    
  return (
    <div>
      <div>
        <br></br>
       IF I TAP HERE ONLY ONE CLICK EVENT IS RECORDED SO IT MUST BE IN THE MAPCONTAINER
        <br></br>
      </div>
      <MapContainer
        center={[55.9533, -3.1883]}
        zoom={10}
        scrollWheelZoom={false}
        style={{ height: "100vh" }}
        className={styles.container}
        doubleClickZoom
      >
        <TileLayer
          attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
          url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
        />
        {Markers}
      </MapContainer>
    </div>
  );
};

如果我能提供任何其他信息,请告诉我。谢谢

正如@SethLutske 所指出的,这个问题似乎源于 leaflet

tap={false} 添加到 MapContainer 似乎已经解决了这个问题。

 <MapContainer
    center={[55.9533, -3.1883]}
    zoom={10}
    scrollWheelZoom={false}
    style={{ height: "100vh" }}
    className={styles.container}
    doubleClickZoom
    tap={false}
  >
     ...
  </MapContainer>