передача опоры в Expo TaskManager - PullRequest
0 голосов
/ 05 августа 2020

Я работаю с диспетчером задач 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,
});
...