React-native,地图,道具'region.latitude'在'MapView'中被标记为必需,但它的值为null

J. *_*Doe 2 javascript reactjs react-native

我在尝试获取世博会中的当前位置时收到此错误。我在 console.log 中得到了正确的值,所以我不知道问题是什么。在 Expo 中,它说“执行 UI 块时抛出异常,NSNull 双值:无法识别的选择器发送到实例”。这是我的代码:

this.state = { text: 'Destination' ,
  latitude: null,
  longitude: null,
  error: null,

componentDidMount() {
navigator.geolocation.getCurrentPosition(
  (position) => {
    this.setState({
      latitude: position.coords.latitude,
      longitude: position.coords.longitude,
      error: null,
    });
  },
  (error) => this.setState({ error: error.message }),
  { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 },
);

{.....}
render()
<MapView style={styles.map}
    region ={{
    latitude:this.state.latitude,
    longitude:this.state.longitude,
    latitudeDelta: 0.1,
    longitudeDelta: 0.1,
Run Code Online (Sandbox Code Playgroud)

riw*_*iwu 5

getCurrentPosition()是异步的,所以你的初始latitude状态为空。

要么为其提供默认的非空值,要么避免渲染,MapView直到它不再为空:

render() {
  return this.state.latitude !== null && <MapView ... />;
}
Run Code Online (Sandbox Code Playgroud)