Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 可能未处理的承诺拒绝(id:1)映射框反应本机_React Native_Mapbox - Fatal编程技术网

React native 可能未处理的承诺拒绝(id:1)映射框反应本机

React native 可能未处理的承诺拒绝(id:1)映射框反应本机,react-native,mapbox,React Native,Mapbox,我试图获取Mapbox上的当前位置,但在返回方法时得到了一个未处理的承诺(TypeError:null不是对象)。我相信这是因为在iOS用户允许权限之前试图获取信息,但不确定如何让函数等待用户权限。它在const currentCoords=[location.coords.longitude,location.coords.latitude]失败 return ( <View style={styles.page}> <View style={st

我试图获取Mapbox上的当前位置,但在返回方法时得到了一个未处理的承诺(TypeError:null不是对象)。我相信这是因为在iOS用户允许权限之前试图获取信息,但不确定如何让函数等待用户权限。它在
const currentCoords=[location.coords.longitude,location.coords.latitude]失败

return (
      <View style={styles.page}>
        <View style={styles.container}>
          <mapbox.MapView style={styles.map} />
          <mapbox.UserLocation
            onUpdate={(location) => {
              const currentCoords = [
                location.coords.longitude,
                location.coords.latitude,
              ];
            }}
          />
        </View>
      </View>
    );
返回(
{
常数currentCoords=[
location.coords.longitude,
位置坐标纬度,
];
}}
/>
);

由于
location
location.coords
为空,您可能会得到
null不是对象的结果

您不必等待权限,只需添加一个null检查,以确保返回的值不为null

  <mapbox.UserLocation
    onUpdate={(location) => {
      if(!location || !location.coords) return;

      const currentCoords = [
        location.coords.longitude,
        location.coords.latitude,
      ];
    }}
  />
{
如果(!location | |!location.coords)返回;
常数currentCoords=[
location.coords.longitude,
位置坐标纬度,
];
}}
/>

谢谢。这似乎奏效了。是否有一种方法可以调用此代码,因为它失败了?一旦用户位置更改,应自动再次调用它。它也可能在权限更改时被调用。你得看看有没有。如果它没有被调用,您应该能够监听权限更改,并手动获取geolocation以执行与回调中相同的工作。