使用React Hooks更新位置会给出错误:更新由AIRMAP管理的视图的“区域”时出错

时间:2019-11-14 01:05:34

标签: react-native geolocation react-hooks

我有此错误,我无法弄清楚出了什么问题。我正在使用React Hooks(useState和useEffect)在React本机应用程序中更新用户的当前位置。

import React, {useEffect, useState} from 'react';
import MapView, {PROVIDER_GOOGLE} from 'react-native-maps';
import Geolocation from '@react-native-community/geolocation';

const MapScreen = () => {
   const [location, setLocation] = useState({
latitude: 18.9712,
longitude: -72.2852,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
 });

useEffect(() => {
Geolocation.getCurrentPosition(position => {
  const region = {
    latitude: position.coords.latitude,
    longitude: position.coords.longitude,
    latitudeDelta: 0.001,
    longitudeDelta: 0.001,
  }
  setLocation({region})
})

}, [])
return (
<MapView
  provider={PROVIDER_GOOGLE}
  style={{flex: 1}}
  showsUserLocation={true}
  region={location}

/>
)
}

export default MapScreen

1 个答案:

答案 0 :(得分:1)

我认为问题在这里,

setLocation({region})

这里region是一个对象,因此它成为

setLocation({{
    latitude: position.coords.latitude,
    longitude: position.coords.longitude,
    latitudeDelta: 0.001,
    longitudeDelta: 0.001,
}})

这是不正确的setState。

您只需要设置区域,

setLocation(region)