#react-native #async-await #geolocation
Вопрос:
Я создаю приложение погоды в react-native для своего портфолио.
Я хотел бы иметь возможность вызывать вспомогательную функцию в своем utils.js файл. Эта функция является функцией асинхронной стрелки и отвечает за получение координат широты и долготы.
Функция возвращает координаты в массиве, и я использую разрушение, чтобы установить состояние в компоненте.
Тем не менее, я получаю предупреждение в своей консоли, в котором говорится следующее:
ПРЕДУПРЕДИТЕ о возможном отклонении необработанного обещания (идентификатор: 1): Ошибка типа: неопределенный не является объектом (оценка ‘_$$_REQUIRE(_dependencyMap[11], «../Utils/utils»).Глобальные функции.getLocation’)
Что я могу сделать не так? Любая помощь будет оказана.
Utils.js
import {PermissionsAndroid} from 'react-native';
import Geolocation from 'react-native-geolocation-service';
const globalFunctions = {
getLocation: async () => {
const coordinates = [];
const hasLocationPermission = await
PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
);
if (hasLocationPermission == PermissionsAndroid.RESULTS.GRANTED) {
Geolocation.getCurrentPosition(
position => {
console.log('Geolocation Granted');
console.log(position);
const latitude = position.coords.latitude;
const longitude = position.coords.longitude;
coordinates.push(latitude);
coordinates.push(longitude);
return coordinates;
},
error => {
console.log(error.code, error.message);
},
{enableHighAccuracy: true, timeout: 15000, maximumAge: 10000},
);
} else {
console.log('User denied Geolocation');
}
},
};
WeatherContainer.js
import React, {Component} from 'react';
import {Text, Image, StyleSheet, View, StatusBar} from 'react-native';
import {globalFunctions} from '../Utils/utils';
class WeatherContainer extends Component {
constructor() {
super();
this.state = {
lat: null,
lon: null,
};
}
componentDidMount = () => {
this.getLocationData();
};
getLocationData = async () => {
const [latitude, longitude] = await globalFunctions.getLocation();
this.setState({
lat: latitude,
lon: longitude,
});
};
render() {
return (
<View style={styles.container}>
<View style={styles.innerContainer}>
<Text style={styles.location}>{this.state.lat}</Text>
<Text>{this.state.lon}</Text>
</View>
</View>
);
}
}
Комментарии:
1. Похоже, вы ничего не экспортируете из
Utils.js
Ответ №1:
Вам необходимо экспортировать функцию globalFunctions из Utils.js
const export globalFunctions