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

Posted

技术标签:

【中文标题】使用 React Hooks 更新位置会出现错误:更新由 AIRMAP 管理的视图的“区域”时出错【英文标题】:Using React Hooks to update location give error: Error while updating 'region' of a view managed by: AIRMAP 【发布时间】:2019-11-14 01:05:34 【问题描述】:

我有这个错误,我不知道出了什么问题。我正在使用 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

【问题讨论】:

我认为问题出在setLocation(region)。试试这个setLocation(region) 没错,请添加答案,以便我接受它作为正确答案,而不仅仅是评论。谢谢 【参考方案1】:

我认为问题就在这里,

setLocation(region)

这里region是一个对象,所以它变成了

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

setState 不正确。

你只需要设置区域,

setLocation(region)

【讨论】:

以上是关于使用 React Hooks 更新位置会出现错误:更新由 AIRMAP 管理的视图的“区域”时出错的主要内容,如果未能解决你的问题,请参考以下文章

错误:使用 react-hooks 时超出最大更新深度

React 17 - 添加 Evergreen UI 窗格会导致错误:无效的挂钩调用。 Hooks 只能在函数组件的主体内部调用

React Hooks: Lazy Loading Breaks useLayoutEffect?

React 官方文档终于更新了!

React hooks - 等待状态更新

升级到 NextJS 9.0 后如何修复 React Hooks?