react-native-timestamp-timer-hooks
Version:
React Native Timer hooks by timestamp
137 lines (87 loc) • 2.82 kB
Markdown
React Native Timestamp timer hooks (timer, countdown)
The timer works even when the app is in the background. (unless the app is removed from the background)
---
<div align="flex-start">
<img align="flex-start" src="./example/resource/example.gif" alt="image" width="300" height="500" />
</div>
<br>
```bash
yarn add react-native-timestamp-timer-hooks
or
npm install react-native-timestamp-timer-hooks
```
```jsx
import { useTimer, useCountdown } from 'react-native-timestamp-timer-hooks';
```
<br>
```jsx
import * as React from "react"
import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
import useTimer from '../hooks/useTimer';
const Timer = () => {
const { counter, start, stop, reset, isStart } = useTimer({
from: 30000,
interval: 100,
to: 40000,
});
return (
<View>
<View>
<Text style={[styles.defaultText, { alignSelf: 'center' }]}>Timer</Text>
</View>
<View style={{ flexDirection: 'row', justifyContent: 'space-around' }}>
<TouchableOpacity
onPress={() => {
if (isStart) stop();
else start();
}}
>
<Text style={styles.defaultText}>{isStart ? 'stop' : 'start'}</Text>
</TouchableOpacity>
<TouchableOpacity onPress={() => reset()}>
<Text style={styles.defaultText}>reset</Text>
</TouchableOpacity>
</View>
<View style={{ alignItems: 'center', marginTop: 20 }}>
<Text
style={[styles.defaultText, { fontSize: 24, fontWeight: 'bold' }]}
>
{counter}
</Text>
</View>
</View>
);
};
export default Timer;
```
Check out the [example project](example) for more examples.
<br>
The `useTimer`, `userCountdown` hooks have the following parameters:
<br>
| Name | Type | Description | Required | Default Value
| --- | --- | ---- | :---: | --- |
| `from` (ms) | number | The initial value of counter | ✅ | 0
| `to` (ms) | number | When the timer should stop | ❌ | undefined
| `interval` (ms) | number | When the timer should stop | ❌ | 50
<br>
<br>
The `useTimer`, `userCountdown` hooks have the following returns values:
| Name | Type | Description
| --- | --- | --- |
| `counter` (ms) | number | The value of counter
| `start` | () => void | Start the counter
| `stop` | () => void | Stop the counter
| `reset` | (resetFrom? : number) => void | Reset the counter. There is an optional parameter to set the `resetFrom` value
| `isStart` | boolean | Return `true` if the counter is running, `false` if not
<br>
<br>
The library is released under the MIT licence.
For more information see LICENSE.