react-native-background-timer,null 不是对象
react-native-background-timer, null is not an object
我在使用 react-native-background-timer 时遇到错误。如果你能帮我解决这个问题,我将不胜感激。
我在Expo Snack上开发一个手机APP,现在想实现自动删除账号的功能:创建账号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
自带的函数,javascript的setInterval等当然可以作为定时器使用,但实际上它们在react native中不起作用。
我错过了什么,或者这是这个库中的问题(我想是这样)?如果是这样,请告诉我这个库的可用版本;我使用最新版本 2.2.0 和 React v35.0.0
谢谢
您不能在托管工作流上将 "react-native-background-timer" 与 Expo 一起使用。这个库需要编译一些本地代码。
相反,您应该学习 Expo BackgroundFetch,它做的事情几乎相同。
https://docs.expo.io/versions/latest/sdk/background-fetch/
使用 Expo 组件,您不需要弹出或编译额外的本机代码。
我在使用 react-native-background-timer 时遇到错误。如果你能帮我解决这个问题,我将不胜感激。
我在Expo Snack上开发一个手机APP,现在想实现自动删除账号的功能:创建账号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
自带的函数,javascript的setInterval等当然可以作为定时器使用,但实际上它们在react native中不起作用。
我错过了什么,或者这是这个库中的问题(我想是这样)?如果是这样,请告诉我这个库的可用版本;我使用最新版本 2.2.0 和 React v35.0.0
谢谢
您不能在托管工作流上将 "react-native-background-timer" 与 Expo 一起使用。这个库需要编译一些本地代码。
相反,您应该学习 Expo BackgroundFetch,它做的事情几乎相同。
https://docs.expo.io/versions/latest/sdk/background-fetch/
使用 Expo 组件,您不需要弹出或编译额外的本机代码。