我正在使用Expo MapView,当我尝试更改OnRegionChange中指示区域的值时,地图返回到先前的位置。如何解决此问题?
import React from 'react';
import { Text, View, TouchableOpacity } from 'react-native';
import { Camera, Permissions } from 'expo';
import {
Location,
MapView,
Marker
} from 'expo';
export default class App extends React.Component {
state= {
region: {
latitude: 37.78825,
longitude: -122.4324,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
},
}
render() {
return (
<MapView
style={{ flex: 1, height: '100%', width: '100%', zIndex: 0 }}
onRegionChange={(region) =>this.setState({ region: region })}
region={this.state.region}
/>
);
}
}
它是因为您将传递给 onRegionChange
中的区域道具的状态设置为
setState
花费时间来设置值和重新渲染组件。
在onRegionChange
之间至少称为5-10次。
因此再次5-10 setState
,所以它变得懒惰。
如果要存储当前区域,则只使用region
以外的其他状态。
edit :实际使用状态也可能是合适的
因此您可以使用普通变量而不是状态。
我解决了:
onRegionChangeComplete={(region) => props.map.animateToRegion(region, 0)}