使用react-native-background-timer

时间:2019-02-18 10:51:13

标签: android react-native

我正在构建一个简单的android应用。我正在尝试让手机每3秒振动一次。这是我的代码:

componentDidMount() {
    BackgroundTimer.runBackgroundTimer(() => {
        Vibration.vibrate(1000);
    }, 3000);
}

componentWillUnmount() {
    BackgroundTimer.stopBackgroundTimer();
}

render() {
    return (
        <View style={styles.container}>
            <ScrollView>
                {this.state.errors.map(e => {
                    const {error, solved, errorInfo, key, uid, date} = e;
                    return (
                        <View key={e.key} style={{backgroundColor: solved === true ? 'green' : '#ff5b68'}}>
                            <Text>{error}</Text>
                            <Text>{errorInfo}</Text>
                            <Text>{key}</Text>
                            <Text>{uid}</Text>
                            <Text>{date}</Text>
                            <MarkedAsSolvedButton id={key} solved={solved}/>
                        </View>
                    )
                })}
            </ScrollView>
        </View>
    );
}

但是我遇到一个错误:

  

TypeError:TypeError:未定义不是对象(正在评估“ RNBackgroundTimer.start”)

我想念什么?

我正在使用以下模块:https://github.com/ocetnik/react-native-background-timer

2 个答案:

答案 0 :(得分:0)

我猜想该组件需要先启动才能使用。首先调用BackgroundTimer.start(),然后尝试执行逻辑。

答案 1 :(得分:0)

您可以使用clearInterval方法。首先声明一个全局变量以方便地启动和结束计时器。示例代码如下:

const myTimer;
class ABC extends React.Component {
componentDidMount()
{
myTimer = BackgroundTimer.setInterval(()=> {
// Your repeated task here.
}, 3000);
}
componentWillUnMount()
{
  // Code to stop timer.
 BackgroundTimer.clearInterval(myTimer);
}
render() {
// remaining code
 }
}