在一个需要'这个'的方法中反应调用this.setState。已经

时间:2016-01-31 02:36:01

标签: javascript google-maps reactjs

我正在使用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.setStatethis.props.methodFromParent,例如this.props.methodFromParent(this.title)。如何在不干扰引用标记的this的情况下这样做。正如所料,使用this.setState会返回错误,指出this.setState is not a function。绑定addListener方法将返回this.getPosition is not a function

谢谢。

1 个答案:

答案 0 :(得分:2)

在循环之前保存对类实例this的引用。

var self = this;
for (i = 0; i < all_professionals.length; i++) { 
  // ...
  marker.addListener('click', function(){
    // ...
    self.setState({clickedOn: selected}) <<<<<<<<
  })
}