Javascript React传单:如何调用resetStyle等GeoJson方法?

Javascript React传单:如何调用resetStyle等GeoJson方法?,javascript,reactjs,leaflet,react-leaflet,Javascript,Reactjs,Leaflet,React Leaflet,我将遵循PropaleJS的示例,并尝试使用GeoJson对象的resetStyle方法和Map对象的fitBounds方法添加交互。在传单中,这些方法通过引用相应的对象来调用: var map = L.map('map'); function zoomToFeature(e) { map.fitBounds(e.target.getBounds()); } var geojson; // ... our listeners geojson = L.geoJson(...); fu

我将遵循PropaleJS的示例,并尝试使用GeoJson对象的resetStyle方法和Map对象的fitBounds方法添加交互。在传单中,这些方法通过引用相应的对象来调用:

var map = L.map('map');

function zoomToFeature(e) {
    map.fitBounds(e.target.getBounds());
}

var geojson;
// ... our listeners
geojson = L.geoJson(...);

function resetHighlight(e) {
    geojson.resetStyle(e.target);
}
如何在react传单中访问这些方法?从用户交互返回的对象中不存在这些方法。我还尝试从react传单中导出它们,但这也不起作用

这是我的名片


我知道一个月前有人问过同样的问题,但解决方案是访问
this.refs.geojson.palicelement.resetStyle(e.target)
,不再工作,因为
refs
不是
e.target
的属性,
仅指
e.target

一种方法是将“ref”属性附加到GeoJSON组件,并将组件传递给事件处理程序

JSFiddle:


//在鼠标输出时重置默认样式
功能重置突出显示(组件,e){
//只是为了表明ref在活动期间存在,我不确定如何在您的库中具体使用它
log(component.refs.geojson);
//geojsonresetStyle(即目标);
//如何封装GeoJson组件/对象?
}
//`component`现在是第一个参数,因为它是通过Function.bind方法传递的,所以我们需要在这里将它传递给相关的处理程序
功能特性(组件、特性、图层){
分层({
鼠标悬停:Highlight功能,
mouseout:resetHighlight.bind(null,组件),
单击:缩放自然
});
}

您需要向函数发送适当的词法范围,然后才能访问 此。参考文件

例如:

this.highlightFeature.bind(this)
然后就是了

onEachFeature(feature, layer) {
 layer.on({
     mouseover: this.highlightFeature.bind(this),
     mouseout: this.resetHighlight.bind(this),
     click: this.clickToFeature.bind(this)
 });
}

onEachFeature(feature, layer) {
 layer.on({
     mouseover: this.highlightFeature.bind(this),
     mouseout: this.resetHighlight.bind(this),
     click: this.clickToFeature.bind(this)
 });