【问题标题】:React-leaflet: Change marker opacity on mouse eventReact-leaflet:更改鼠标事件的标记不透明度
【发布时间】:2022-06-11 02:12:17
【问题描述】:

我正在尝试更改 mouseover 事件的标记不透明度。

<Marker position={} icon={} opacity={0.7}
    eventHandlers={{
        mouseover: (event) => {
            // change opacity here?
            // I tried:
            event.target.options.opacity = 1;
        }
    }}
/>

这行不通。我认为唯一的方法是为每个标记保持一个状态,但我不喜欢这个想法。这只是一个简单的任务,我不想为此保留所有状态。

【问题讨论】:

    标签: react-leaflet


    【解决方案1】:

    你可以这样试试:

    
    <>
      {markers.map(marker => {
    
        // reference - no need for array
        const marker = useRef(null);
    
        return (
          <Marker
            ref={marker}
            key={marker.id}
            position={[marker.lat, marker.lng]}
            eventHandlers={{
              mouseover: () => (marker.current._icon.style['opacity'] = 0.5),
              mouseout: () => (marker.current._icon.style['opacity'] = 1),
            }}
          >
          </Marker>
        );
      })}
    </>
    

    它使用ref 来获取 HTML 元素的句柄并直接在其上更改样式。

    【讨论】:

    • 这适用于一个标记。但是我必须保留对我在地图上放置的每个标记的引用。这意味着我需要一个 useRef() 数组,而对于如此简单的事情来说,这似乎太复杂了。
    • @kristyna:扩展示例适用于您的用例吗?
    猜你喜欢
    • 2013-01-04
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    相关资源
    最近更新 更多