Composable React Timer component that passes status props to children, in addition to some basic callbacks. Can be used at a countdown timer ⏲ or as stopwatch ⏱ to track time while active.
Via npm
npm install --save react-timer-wrapper
Via Yarn
yarn add react-timer-wrapper
The Timer
can be used in a couple different ways. You could use it as a standalone
timer and setup callbacks to trigger things to happen in your project. Or, wrap
child components in Timer
component, where those children will receive
props passed in by the Timer
.
It can be used as a countdown timer, which will fire the onFinish
event upon
completion. Or, you can use it to track the time that occurs while it’s active.
active:Boolean
- Start/stop the timer. (Default:false
)component:String | Element
- Element or React component used to render/wrap the children. (Default:div
)duration:Number
- Enables countdown mode and is the number of milliseconds to count before firingonFinish
. (Default:10000
)loop:Boolean
- Enable looping of the countdown timer. (Default:false
)time:Number
- Either used as a time offset for the duration when used as a countdown timer, or the initial time to start from when used for tracking time. (Default:0
)onFinish:Function
- Callback fired when the timer has finished. (Fired in countdown mode only)onStart:Function
- Callback fired when the timer is started.onStop:Function
- Callback fired when the timer is stopped.onTimeUpdate:Function
- Callback fired when time updates.
import Timer from 'react-timer-wrapper';
...
onTimerStart({duration, progress, time}) {
}
onTimerStop({duration, progress, time}) {
}
onTimerTimeUpdate({duration, progress, time}) {
}
onTimerFinish({duration, progress, time}) {
}
render() {
const {
timerActive,
} = this.state;
return (
<Timer
active={timerActive}
onFinish={this.onTimerFinish}
onStart={this.onTimerStart}
onStop={this.onTimerStop}
onTimeUpdate={this.onTimerTimeUpdate}
/>
);
}
...
import Timer from 'react-timer-wrapper';
import CircleIndicator from 'react-indicators';
...
render() {
const {
timerShouldRun,
} = this.state;
return (
<Timer active={timerShouldRun}>
<CircleIndicator />
</Timer>
);
}
...
The Timer
allows you to easily compose components that provide a visual
status of the timer. Each children receives the following props that you can use
to communicate the status of the timer.
duration:Number
- Duration of the countdown timer. (Available for countdown timers only,null
passed when used for time tracking)progress:Number
- Current percentage of timer complete. (Available for countdown timers only,null
passed when used for time tracking)time:Number
- Current time on the timer in milliseconds.