React Leaflet:标记组件的自定义事件 "onClick"
React Leaflet: Custom event "onClick" for Marker component
我想为 'react-leaflet' 的 Marker 元素定义一个 React 组件。例如
import React,{useState} from 'react'
import {Marker,useMapEvent } from 'react-leaflet'
import fireIconSvg from './fire-icon.svg'
import L from "leaflet";
const OSLocationMarker = ( {position, onClick} ) => {
const locationIcon = new L.Icon({
iconUrl: fireIconSvg,
iconRetinaUrl: fireIconSvg,
iconAnchor: null,
popupAnchor: null,
shadowUrl: null,
shadowSize: null,
shadowAnchor: null,
iconSize: new L.Point(35, 45),
className: 'location-icon'
});
return (
<Marker
data="customdata"
position={position}
icon={locationIcon}
onClick={onClick}
>
</Marker>
);
}
export default OSLocationMarker;
通过这个我想在点击任何OSLocationMarker(有N个标记)时触发一个功能。 OSLocationMarker 获取回调函数作为 prop。这是行不通的。使用 useMapEvent() 传单挂钩我没有让它工作。
为什么函数没有被调用?
onClick
在 react-leaflet v3 中不再起作用。 useMapEvent(s)
适用于 map
实例,不适用于 UI 组件,如 Marker
。要在 Marker
上注册事件处理程序,您需要使用 eventHandlers
属性:
<Marker
data="customdata"
position={position}
icon={locationIcon}
eventHandlers={{ click: onClick }}
>
</Marker>
我想为 'react-leaflet' 的 Marker 元素定义一个 React 组件。例如
import React,{useState} from 'react'
import {Marker,useMapEvent } from 'react-leaflet'
import fireIconSvg from './fire-icon.svg'
import L from "leaflet";
const OSLocationMarker = ( {position, onClick} ) => {
const locationIcon = new L.Icon({
iconUrl: fireIconSvg,
iconRetinaUrl: fireIconSvg,
iconAnchor: null,
popupAnchor: null,
shadowUrl: null,
shadowSize: null,
shadowAnchor: null,
iconSize: new L.Point(35, 45),
className: 'location-icon'
});
return (
<Marker
data="customdata"
position={position}
icon={locationIcon}
onClick={onClick}
>
</Marker>
);
}
export default OSLocationMarker;
通过这个我想在点击任何OSLocationMarker(有N个标记)时触发一个功能。 OSLocationMarker 获取回调函数作为 prop。这是行不通的。使用 useMapEvent() 传单挂钩我没有让它工作。 为什么函数没有被调用?
onClick
在 react-leaflet v3 中不再起作用。 useMapEvent(s)
适用于 map
实例,不适用于 UI 组件,如 Marker
。要在 Marker
上注册事件处理程序,您需要使用 eventHandlers
属性:
<Marker
data="customdata"
position={position}
icon={locationIcon}
eventHandlers={{ click: onClick }}
>
</Marker>