You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React-leaflet中mouseout事件调用resetStyle重置样式报错如何解决

问题根因
  • react-leaflet 3.x 及以上版本对ref暴露实例的逻辑做了破坏性更新,和2.x版本完全不兼容:2.x版本中,原生Leaflet的图层、组件实例统一挂载在ref的current.leafletElement字段上;3.x+版本直接将原生Leaflet实例挂载在ref.current上,彻底移除了leafletElement这一层冗余属性。
  • 原有代码读取geoJsonRef.current.leafletElement得到的值为undefined,在undefined上调用resetStyle方法就会直接抛出类型错误,这也是相同逻辑在2.8.0版本正常运行、高版本报错的核心原因。
修复方法

直接调整实例访问的层级,去掉多余的.leafletElement调用即可,修正后的代码如下:

geoJsonRef.current.resetStyle(e.target);

适配提示:如果是从react-leaflet 2.x整体升级到3.x/4.x版本,所有通过ref调用原生Leaflet实例的逻辑都需要做相同调整——Map、TileLayer、GeoJSON、Marker等所有官方组件的ref,都可以直接通过ref.current拿到对应的原生Leaflet实例,不需要再访问leafletElement属性。

内容的提问来源于stack exchange,提问作者Prabhakar kotipalli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:06:06