Я работаю с диспетчером задач expo, чтобы получить местоположение в фоновом режиме. Это работает, однако я пытаюсь передать в него реквизит из моего сокращения, чтобы выполнить функцию, но я продолжаю получать неопределенный объект. Ниже мой пример кода, я был бы признателен, если бы кто-нибудь мог указать мне правильное направление.
import React from 'react';
import { Text, TouchableOpacity } from 'react-native';
import * as TaskManager from 'expo-task-manager';
import * as Location from 'expo-location';
import { connect } from 'react-redux';
const LOCATION_TASK_NAME = 'background-location-task';
export default class Component extends React.Component {
onPress = async () => {
await Location.startLocationUpdatesAsync(LOCATION_TASK_NAME, {
accuracy: Location.Accuracy.Balanced,
timeInterval: 5000,
});
};
render() {
return (
<TouchableOpacity onPress={this.onPress} style={{marginTop: 100}}>
<Text>Enable background location</Text>
</TouchableOpacity>
);
}
}
TaskManager.defineTask(LOCATION_TASK_NAME, async ({ data, error }) => {
if (error) {
console.log(error);
return;
}
if (data) {
const { locations } = data;
const latitude = locations[0].coords.latitude;
const longitude = locations[0].coords.longitude;
const loc = { latitude, longitude };
console.log(loc);
console.log(this.props.regType);
// Storing Received Lat & Long to DB by logged In User Id
// console.log("Received new locations for user = ", userId, locations);
}
});
const mapStateToProps = (state) => ({
regType: state.userDetail.regType,
});