我正在使用for循环来迭代我的Google地图标记:
for (i = 0; i < all_professionals.length; i++) {
var marker = new google.maps.Marker({
position: this.props.listings[i].lat_lng,
title: this.props.listings[i].name,
animation: google.maps.Animation.DROP,
map:map
});
marker.addListener('click', function(){
map.panTo(this.getPosition());
selected = this.title;
console.log(selected);
this.setState({clickedOn: selected}) <<<<<<<<
})
}
在addListener
方法中,我尝试运行this.setState
或this.props.methodFromParent
,例如this.props.methodFromParent(this.title)
。如何在不干扰引用标记的this
的情况下这样做。正如所料,使用this.setState
会返回错误,指出this.setState is not a function
。绑定addListener
方法将返回this.getPosition is not a function
。
谢谢。
答案 0 :(得分:2)
在循环之前保存对类实例this
的引用。
var self = this;
for (i = 0; i < all_professionals.length; i++) {
// ...
marker.addListener('click', function(){
// ...
self.setState({clickedOn: selected}) <<<<<<<<
})
}