警告:道具类型失败:未指定必需的道具“region.latitude”

Posted

技术标签:

【中文标题】警告:道具类型失败:未指定必需的道具“region.latitude”【英文标题】:Warning: failed prop type: Required prop 'region.latitude' was not specified 【发布时间】:2017-04-07 13:12:28 【问题描述】:

我有一个问题,但我不知道它是否与此有关。

当我从 android Studio 在 Android Emulator 上运行我的地图时,我收到了这个警告,我在 Palo alto 的 Google plex 上进行地理定位,而不是在我的实际地理位置上。是不是因为我用了模拟器?

如果你想检查,这是我的代码:

地图.js

import React,  Component  from 'react';
import Geolocation from '../geolocation/Geolocation';
import Shops from '../shops/Shop';
import 
  Text,
  View
 from 'react-native';
import MapView from 'react-native-maps';
import styles from './Style';

class Map extends Geolocation 

  render() 
    return (
      <View>
        <MapView style=styles.map
        region=
          latitude: this.state.position.coords.latitude,
          latitudeDelta: 0.001,
          longitude: this.state.position.coords.longitude,
          longitudeDelta: 0.001
         />
        <Shops />
      </View>
    );
  


export default Map;

地理位置.js

import React,  Component  from 'react';
import styles from './Style';

class Geolocation extends Component 

    constructor(props) 
        super(props);
        this.state = 
            position : 
                coords: 
            
        
    

    componentDidMount() 
        navigator.geolocation.getCurrentPosition(
            (position) => 
                this.setState(position);
            ,
            (error) => alert(error.message),
            enableHighAccuracy: true, timeout: 20000
        );
        navigator.geolocation.watchPosition((position) => 
            this.setState(position);
        );
    


export default Geolocation;

如果您有任何想法,感谢您的回答,我对这个问题有点迷茫。

【问题讨论】:

【参考方案1】:

我相信这是因为您从 this.state.position.cords 对象中分配了 MapView 坐标,在初始渲染时,cords.latitudecords.longitude 的坐标是未定义的,因此会引发 propTypes 警告。

在构造函数中初始化它们以避免这种情况。

constructor(props) 
    super(props);
    this.state = 
        position : 
            coords: 
              latitude: 0,
              longitude: 0
            
        
    

【讨论】:

【参考方案2】:

仅在 Android 中存在问题

解决方案:-

<MapView 
  initialRegion=
    latitude: Number(letitude),
    longitude: Number(longitude),
    latitudeDelta: 0.0922,
    longitudeDelta: 0.0421
  
>

数字(你的让和长)它将转换成数字

【讨论】:

【参考方案3】:

可以更改经纬度。

从 Android Studio 启动 Android Device Monitor(工具 -> Android -> Android Device Monitor)

切换到 Emulator Control Tab 并在 Location Controls 组中进行更改。

【讨论】:

以上是关于警告:道具类型失败:未指定必需的道具“region.latitude”的主要内容,如果未能解决你的问题,请参考以下文章

警告:失败的道具类型:提供给“Carousel”的“对象”类型的无效道具`数据`,预期`数组`

如何将 ref 作为道具传递:[Vue 警告]:无效的道具:道具“containerRef”的类型检查失败。预期对象,得到 HTMLDivElement?

vue 警告:无效的道具:道具“modalState”的类型检查失败。预期布尔值,得到函数

通过 containerElement 道具将 NavLink 传递给 Material UI 组件会给出“道具类型失败”警告

[Vue 警告]:无效的道具:道具“值”的类型检查失败。预期的数组,得到值为 1 的数字

[Vue 警告]:缺少必需的道具