response-native-background-timer, null не является объектом - PullRequest
0 голосов
/ 07 мая 2020

У меня ошибка при использовании таймера response-native-background-timer. Я был бы признателен, если бы вы помогли мне решить эту проблему.

Я разрабатываю мобильное приложение на Expo Snack, и теперь я хочу реализовать функцию автоматического удаления учетной записи: при создании учетной записи и не проверяется в течение 5 минут, он будет удален автоматически. Итак, я искал фоновый таймер и нашел библиотеку ниже.

https://github.com/ocetnik/react-native-background-timer

Однако мне не удалось этого добиться из-за ошибки ниже

(3:2693) null is not an object (evaluating 'o.setTimeout')

и это мой код

import React, { Component } from 'react';
import { View, Text, TouchableOpacity, Platform } from 'react-native';
import BackgroundTimer from 'react-native-background-timer';

let counter = 0;
let timer = null;

export default class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      second: 0,
    };
  }
  _interval: any;

  onStart = () => {
    if (Platform.OS == 'ios') {
      BackgroundTimer.start();
    }

    this._interval = BackgroundTimer.setInterval(() => {
      this.setState({
        second: this.state.second + 1,
      });
    }, 1000);
  };

  onPause = () => {
    BackgroundTimer.clearInterval(this._interval);
  };

  onReset = () => {
    this.setState({
      second: 0,
    });
    BackgroundTimer.clearInterval(this._interval);
  };
  render() {
    return (
      <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
        <TouchableOpacity onPress={this.onStart}>
          <Text>start</Text>
        </TouchableOpacity>
        <TouchableOpacity onPress={this.onPause}>
          <Text>pause</Text>
        </TouchableOpacity>
        <TouchableOpacity onPress={this.onReset}>
          <Text>reset</Text>
        </TouchableOpacity>
        <Text>{this.state.second}</Text>
      </View>
    );
  }
}

Я следил за руководством этого парня https://medium.com/@loons.create / how-to-setup-react-native-background-timer -22263d655847

Оборудованная функция, setInterval javascript и et c. конечно, отлично работает как таймер, но на самом деле они не работают в react native.

Что мне не хватает, или это проблема внутри библиотеки (я так полагаю)? Если да, скажите, пожалуйста, доступную версию этой библиотеки; Я использую последнюю версию 2.2.0 и React v35.0.0

Спасибо

1 Ответ

0 голосов
/ 07 мая 2020

Вы не можете использовать «response-native-background-timer» с Expo в управляемом рабочем процессе. Эта библиотека должна скомпилировать собственный код.

Вместо этого вам следует воспользоваться Expo BackgroundFetch, который делает почти то же самое.

https://docs.expo.io/versions/latest/sdk/background-fetch/

Используя компоненты Expo, вам не нужно извлекать или компилировать дополнительный собственный код.

...