- Notifications
You must be signed in to change notification settings - Fork116
amrlabib/react-timer-hook
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
React timer hook is a customreact hook, built to handle timer, stopwatch, and time logic/state in your react component.
useTimer: Timers (countdown timer)useStopwatch: Stopwatch (count up timer)useTime: Time (return current time)
yarn add react-timer-hook ORnpm install --save react-timer-hook
useTimer -Demo
importReactfrom'react';import{useTimer}from'react-timer-hook';functionMyTimer({ expiryTimestamp}){const{ totalSeconds, milliseconds, seconds, minutes, hours, days, isRunning, start, pause, resume, restart,}=useTimer({ expiryTimestamp,onExpire:()=>console.warn('onExpire called'),interval:20});return(<divstyle={{textAlign:'center'}}><h1>react-timer-hook</h1><p>Timer Demo</p><divstyle={{fontSize:'100px'}}><span>{days}</span>:<span>{hours}</span>:<span>{minutes}</span>:<span>{seconds}</span>:<span>{milliseconds}</span></div><p>{isRunning ?'Running' :'Not running'}</p><buttononClick={start}>Start</button><buttononClick={pause}>Pause</button><buttononClick={resume}>Resume</button><buttononClick={()=>{// Restarts to 5 minutes timerconsttime=newDate();time.setSeconds(time.getSeconds()+300);restart(time)}}>Restart</button></div>);}exportdefaultfunctionApp(){consttime=newDate();time.setSeconds(time.getSeconds()+600);// 10 minutes timerreturn(<div><MyTimerexpiryTimestamp={time}/></div>);}
| key | Type | Required | Description |
|---|---|---|---|
| expiryTimestamp | Date object | YES | this will define for how long the timer will be running |
| autoStart | boolean | No | flag to decide if timer should start automatically, by default it is set totrue |
| interval | number | No | value to change the interval of the timer, by default it is set to 1000ms. Note: this value will not affect the timer, it will just define the frequency used to calculate the current timer values. For example, if you have a use case where milliseconds are used, you need to use a smaller value for the interval, for example, 20ms or 100ms based on your needs. |
| onExpire | Function | No | callback function to be executed once countdown timer is expired |
| key | Type | Description |
|---|---|---|
| milliseconds | number | milliseconds value, to get accurate ms values you need to set interval to a smaller value example: 20ms |
| seconds | number | seconds value |
| minutes | number | minutes value |
| hours | number | hours value |
| days | number | days value |
| totalSeconds | number | total number of seconds left in timer NOT converted to minutes, hours or days |
| totalMilliseconds | number | total number of milliseconds left in timer NOT converted to minutes, hours or days |
| isRunning | boolean | flag to indicate if timer is running or not |
| pause | function | function to be called to pause timer |
| start | function | function if called after pause the timer will continue based on original expiryTimestamp |
| resume | function | function if called after pause the timer will continue countdown from last paused state |
| restart | function | function to restart timer with new expiryTimestamp, accept 2 arguments first is the newexpiryTimestamp of type Date object and second isautoStart of type boolean to decide if it should automatically start after restart or not, default istrue |
useStopwatch -Demo
importReactfrom'react';import{useStopwatch}from'react-timer-hook';functionMyStopwatch(){const{ totalSeconds, milliseconds, seconds, minutes, hours, days, isRunning, start, pause, reset,}=useStopwatch({autoStart:true,interval:20});return(<divstyle={{textAlign:'center'}}><h1>react-timer-hook</h1><p>Stopwatch Demo</p><divstyle={{fontSize:'100px'}}><span>{days}</span>:<span>{hours}</span>:<span>{minutes}</span>:<span>{seconds}</span>:<span>{milliseconds}</span></div><p>{isRunning ?'Running' :'Not running'}</p><buttononClick={start}>Start</button><buttononClick={pause}>Pause</button><buttononClick={reset}>Reset</button></div>);}exportdefaultfunctionApp(){return(<div><MyStopwatch/></div>);}
| key | Type | Required | Description |
|---|---|---|---|
| autoStart | boolean | No | if set totrue stopwatch will auto start, by default it is set tofalse |
| offsetTimestamp | Date object | No | this will define the initial stopwatch offset example:const stopwatchOffset = new Date(); stopwatchOffset.setSeconds(stopwatchOffset.getSeconds() + 300); this will result in a 5 minutes offset and stopwatch will start from 0:0:5:0 instead of 0:0:0:0 |
| interval | number | No | value to change the interval of the stopwatch, by default it is set to 1000ms. Note: this value will not affect the stopwatch, it will just define the frequency used to calculate the current timer values. For example, if you have a use case where milliseconds are used, you need to use a smaller value for the interval, for example, 20ms or 100ms based on your needs. |
| key | Type | Description |
|---|---|---|
| milliseconds | number | milliseconds value, to get accurate ms values you need to set interval to a smaller value example: 20ms |
| seconds | number | seconds value |
| minutes | number | minutes value |
| hours | number | hours value |
| days | number | days value |
| totalSeconds | number | total number of seconds in stopwatch NOT converted to minutes, hours or days |
| isRunning | boolean | flag to indicate if stopwatch is running or not |
| start | function | function to be called to start/resume stopwatch |
| pause | function | function to be called to pause stopwatch |
| reset | function | function to be called to reset stopwatch to 0:0:0:0, you can also pass offset parameter to this function to reset stopwatch with offset, similar to howoffsetTimestamp will offset the initial stopwatch time, this function will accept also a second argument which will decide if stopwatch should automatically start after reset or not default istrue |
useTime -Demo
importReactfrom'react';import{useTime}from'react-timer-hook';functionMyTime(){const{ milliseconds, seconds, minutes, hours, ampm,}=useTime({format:'12-hour',interval:20});return(<divstyle={{textAlign:'center'}}><h1>react-timer-hook</h1><p>Current Time Demo</p><divstyle={{fontSize:'100px'}}><span>{hours}</span>:<span>{minutes}</span>:<span>{seconds}</span><span>{milliseconds}</span><span>{ampm}</span></div></div>);}exportdefaultfunctionApp(){return(<div><MyTime/></div>);}
| key | Type | Required | Description |
|---|---|---|---|
| format | string | No | if set to12-hour time will be formatted with am/pm |
| interval | number | No | value to change the interval of the time, by default it is set to 1000ms. Note: this value will not affect the thime, it will just define the frequency used to calculate the current time values. For example, if you have a use case where milliseconds are used, you need to use a smaller value for the interval, for example, 20ms or 100ms based on your needs. |
| key | Type | Description |
|---|---|---|
| milliseconds | number | milliseconds value |
| seconds | number | seconds value |
| minutes | number | minutes value |
| hours | number | hours value |
| ampm | string | am/pm value if12-hour format is used |
Starting fromv1.1.0 and above default exportuseTimer is deprecated, your old code will still work but it is better to start using named exports{ useTimer, useStopwatch, useTime }
About
React timer hook
Topics
Resources
License
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
No packages published