这是我的MapView代码,
<MapView
style={styles.map}
initialRegion={
this.state.region
}
region={this.state.region}
onRegionChangeComplete={this.onRegionChange}
showsMyLocationButton
showsCompass
showsUserLocation
zoomControlEnabled
loadingEnabled
onMapReady={this.state.placesread ? this.getBreakfast : null}
>
{marker}
</MapView>
我的问题是,当用户移动地图位置时,地图开始随机移动而不停止,并且不关闭地图窗口就无法停止。
当地图加载后,我会在地图上获得标记并加载,并且类似于google地图,我在地图上搜索了该区域按钮,因此我正在使用onRegionChangeComplete
存储要声明的新区域。
我的onRegionChangeComplete
代码是
onRegionChange = async region => {
await this.setState({ region });
await this.setState({ regionChange: true });
};
答案 0 :(得分:1)
我想问题是您正在使用onRegionChangeComplete
回调存储要声明的新区域。即this.state.region
。并将该region
道具传递给MapView
组件。
尝试从region={this.state.region}
组件中删除MapView
。
更新
将await
与setState
一起使用的另一件事是完全多余的(await this.setState({ region })
),因为setSate不会返回promise
而是undefined
。
setState
是异步功能。如果您想等待它,您可以做的是将其放入Promise,并在callback / second参数中进行解析。
例如,每当您希望setState
像这样的同步调用promisedSetState
时。
promisedSetState = (newState) => new Promise((resolve) => {
this.setState(newState, () => {
resolve();
});
});
//await the promise to get resolved
await promisedSetState({newState: 'whatever it is'});