React native 可能未处理的承诺拒绝(id:1)映射框反应本机
我试图获取Mapbox上的当前位置,但在返回方法时得到了一个未处理的承诺(TypeError:null不是对象)。我相信这是因为在iOS用户允许权限之前试图获取信息,但不确定如何让函数等待用户权限。它在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
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以执行与回调中相同的工作。