Я создаю приложение для путешествий.Одним из экранов в приложении является экран карты.Я использую watchPositionAsync из Expo Locations.watchPositionAsync прекрасно работает и передает пользовательские координаты.Я хочу, чтобы watchPositionAsync был остановлен / удален после закрытия экрана карты / модального окна.Я добавляю функцию .remove () к watchPositionAsync, но, к сожалению, watchPositionAsync продолжает работать.Как заставить его перестать работать после закрытия модала?
Я пытался использовать .remove () различными способами: - componentWillUnmount и т. Д. - Я даже пытался выполнить его в кнопке(onPress)
async componentWillMount() {
const { status } = await Permissions.askAsync(Permissions.LOCATION);
if (status === 'granted') {
this._getLocationAsync();
} else {
this.setState({ error: 'Locations services needed' });
}
}
componentWillUnmount() {
this._stopGetLocationAsync().catch(err => console.log('err'));
}
_getLocationAsync = async () => {
const location = await Location.watchPositionAsync(
{
enableHighAccuracy: true,
distanceInterval: 1,
timeInterval: 10000
},
newLocation => {
let coords = newLocation.coords;
// this.props.getMyLocation sets my reducer state my_location
this.props.getMyLocation({
latitude: parseFloat(coords.latitude),
longitude: parseFloat(coords.longitude)
});
},
error => console.log(error)
);
return location;
};
_stopGetLocationAsync = async () => {
const location = await Location.watchPositionAsync();
return location.remove();
};
Я ожидаю, что watchPositionAsync будет удален после размонтирования компонента, но когда я console.log (location.remove ()), я получаю неопределенное значение.