【问题标题】:MapMarker does not update description onPress immediatelyMapMarker 不会立即更新描述 onPress
【发布时间】:2019-01-19 14:02:15
【问题描述】:

我正在尝试学习如何使用 React Native 地图,并且我正在尝试添加自定义地图标记。出于某种原因,当我尝试使用以下代码时,图像会正确更新,但描述在第二次单击之前不会正确更新。第一次单击将显示“未选择”,但单击同一标记将显示我想要的实际文本。我该如何解决这个问题?

由于图像正在更新为 newImage,我知道 this.state.selectedMarkerIndex === i 但是由于某种原因,相同的相等性不适用于描述?

    state = {busText:[]}
    fetchData=(i, index)=>{    
    fetch('LINK TO GET BUSES'+ i.toString() + '/buses', {method:'GET'})
        .then((response) => response.json())
        .then((responseJson) => {
            this.setState({
            selectedMarkerIndex: index,
            busText: responseJson
        },
        ()=>{
          console.log("selected index: " + this.state.selectedMarkerIndex)
        }
    )

    console.log(JSON.stringify(this.state.busText));
    console.log("_______________________________________________________");
})
}


  renderMarkers = ()=>{
  return busStops.stops.map((stop, i) => {
  return <Marker marker
    key={ `${i}` }

    coordinate={{latitude: stop.location.latitude, longitude: stop.location.longitude}}

    title = {stop.stopName}
    image = {this.state.selectedMarkerIndex === i ? newImage : busStopImage} 
    description={this.state.selectedMarkerIndex === i ? JSON.stringify(this.state.busText) : "not selected"}

    onPress={() => {
        this.fetchData(stop.stopID, i)
        console.log(this.state.selectedMarkerIndex + "i :" + i)
      }

    }

    />
})

}

我希望 MapMarker 的描述在我单击它时会更新,其中包含已获取但未发生的内容。

【问题讨论】:

    标签: reactjs react-native


    【解决方案1】:

    有几件事:为了保证在 setState 之后执行,你需要把你的

    this.setState({busText: responseJson})
    

    fetchData() 回调中。更好的是,更早地设置 busText 状态,即设置 selectedMarkerIndex 状态。

    另外,如果您遇到响应时间问题,请尝试删除一些 console.log() 调用。原生(尤其是 iOS)被它们困住了。

    【讨论】:

    • 我已将其更改为您建议的位置,但问题仍然存在。当我单击标记时,它在被选中时仍显示为“未选中”。 image = {this.state.selectedMarkerIndex === i ? newImage : busStopImage} description={this.state.selectedMarkerIndex === i ? JSON.stringify(this.state.busText) : "not selected"} 他们都应该评估为真,但第二行(描述)没有,而图像由于某种原因确实评估为真。
    • 你什么都没改变。上面的代码完全一样。我以为你的问题是The first click will show "not selected" but clicking on the same marker will show the actual text I want. How can I fix this?
    • 对不起。我在我的编辑器上进行了更改,而不是在这里(现在更改了)。你说的是我的问题。出于某种原因,在尝试了您最初的建议后,第一次点击仍然显示“未选中”。
    • 我觉得很合适。模拟器和设备中的行为是否相同?
    • 两者都一样。
    猜你喜欢
    • 2018-11-08
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多