Reactjs 如何在不重新渲染mapview的情况下更新标记位置?反应本机映射
我正在根据标记数组状态更新多个标记位置。所以当我用setState更新它时,渲染函数会像往常一样触发,mapview会重新渲染。因为它有一个初始区域和区域道具,所以它会根据玩家位置状态自动关注玩家位置(我不想要这个,我只想要在初始加载时) 如何在不重新渲染mapview的情况下更新标记位置Reactjs 如何在不重新渲染mapview的情况下更新标记位置?反应本机映射,reactjs,react-native,react-native-maps,Reactjs,React Native,React Native Maps,我正在根据标记数组状态更新多个标记位置。所以当我用setState更新它时,渲染函数会像往常一样触发,mapview会重新渲染。因为它有一个初始区域和区域道具,所以它会根据玩家位置状态自动关注玩家位置(我不想要这个,我只想要在初始加载时) 如何在不重新渲染mapview的情况下更新标记位置 render() { return ( <MapView initialRegion={this.state.playerLocation} reg
render() {
return (
<MapView
initialRegion={this.state.playerLocation}
region={this.state.playerLocation}
style={ styles.map }>
{this.renderMarkers()}
</MapView>
);
}
renderMarkers = () => {
return(
this.state.markers.map(marker=>{
return(
<Marker coordinate = {{
latitude: marker.lat,
longitude: marker.long
}}
title={marker.id}/>
)
})
}
render(){
返回(
{this.renderMarkers()}
);
}
渲染标记=()=>{
返回(
this.state.markers.map(marker=>{
返回(
)
})
}
这是react中一个非常常见的问题,有一个非常好的解决方案
使用名为shouldComponentUpdate
您可以尝试将渲染标记提取到单独的组件,然后添加生命周期以始终返回False。即,一旦安装组件,它将不会再次重新渲染
我不确定这是否会导致您的情况出现任何倒退,但如果出现倒退,您可以传递一个道具,该道具可以触发SCU中的重新渲染,并在需要时更新标记。这是您需要处理的问题。这是react中非常常见的问题,并且有一个非常好的解决方案 使用名为
shouldComponentUpdate
您可以尝试将渲染标记提取到单独的组件,然后添加生命周期以始终返回False。即,一旦安装组件,它将不会再次重新渲染
我不确定这是否会导致您的情况出现任何倒退,但如果出现倒退,您可以传递一个道具,该道具可以触发SCU中的重新渲染,并在需要时更新标记。这是您需要使用的