当处理程序是绑定函数时,有没有办法确定拖动哪个Marker
?这是我的反应组件的片段:
constructor() {
this.handleMarkerMove = this.handleMarkerMove.bind(this);
}
createMarker() {
const marker = new google.maps.Marker({...});
google.maps.event.addListener(marker, "dragend", this.handleMarkerMove);
}
handleMarkerMove(e) {
const latitude = e.latLng.lat();
const longitude = e.latLng.lng();
const theMarker = ???
// this = the class when .bind(this) registered in constructor
}
如果我不使用this.handleMarkerMove = this.handleMarkerMove.bind(this)
,我将失去对this
的引用,这就是Google地图发送Marker
的方式。
是否可以在不创建嵌套函数的情况下同时将this
和Marker
同时发送到handleMarkerMove(e)
?
答案 0 :(得分:1)
我相信你没有可靠的方法(除了你所说的),但有一个可能有助于将google maps
与react
here整合的回购
答案 1 :(得分:1)
您无法使用.bind(this)
,因为this
关键字将引用该类本身。最好的选择是使用嵌套函数,没有错: - )。
google.maps.event.addListener(marker, 'dragend', (e) => this.handleMarkerMove(e));
您还可以将标记添加为第二个参数:
const marker = new google.maps.Marker({...});
google.maps.event.addListener(marker, 'dragend', this.handleMarkerMove.bind(this, marker));
现在,您可以通过事件处理程序中的第二个参数访问标记对象:
handleMarkerMove(e, marker) {...}