1- import { useState } from 'react' ;
1+ import { useState , useCallback } from 'react' ;
22import { Time , Validate } from './utils' ;
33import { useInterval } from './hooks' ;
44
@@ -20,38 +20,38 @@ export default function useTimer({ expiryTimestamp: expiry, onExpire, autoStart
2020 const [ didStart , setDidStart ] = useState ( autoStart ) ;
2121 const [ delay , setDelay ] = useState ( getDelayFromExpiryTimestamp ( expiryTimestamp ) ) ;
2222
23- function handleExpire ( ) {
23+ const handleExpire = useCallback ( ( ) => {
2424 Validate . onExpire ( onExpire ) && onExpire ( ) ;
2525 setIsRunning ( false ) ;
2626 setDelay ( null ) ;
27- }
27+ } , [ onExpire ] ) ;
2828
29- function pause ( ) {
29+ const pause = useCallback ( ( ) => {
3030 setIsRunning ( false ) ;
31- }
31+ } , [ ] ) ;
3232
33- function restart ( newExpiryTimestamp , newAutoStart = true ) {
33+ const restart = useCallback ( ( newExpiryTimestamp , newAutoStart = true ) => {
3434 setDelay ( getDelayFromExpiryTimestamp ( newExpiryTimestamp ) ) ;
3535 setDidStart ( newAutoStart ) ;
3636 setIsRunning ( newAutoStart ) ;
3737 setExpiryTimestamp ( newExpiryTimestamp ) ;
3838 setSeconds ( Time . getSecondsFromExpiry ( newExpiryTimestamp ) ) ;
39- }
39+ } , [ ] ) ;
4040
41- function resume ( ) {
41+ const resume = useCallback ( ( ) => {
4242 const time = new Date ( ) ;
4343 time . setMilliseconds ( time . getMilliseconds ( ) + ( seconds * 1000 ) ) ;
4444 restart ( time ) ;
45- }
45+ } , [ seconds , restart ] ) ;
4646
47- function start ( ) {
47+ const start = useCallback ( ( ) => {
4848 if ( didStart ) {
4949 setSeconds ( Time . getSecondsFromExpiry ( expiryTimestamp ) ) ;
5050 setIsRunning ( true ) ;
5151 } else {
5252 resume ( ) ;
5353 }
54- }
54+ } , [ expiryTimestamp , didStart , resume ] ) ;
5555
5656 useInterval ( ( ) => {
5757 if ( delay !== DEFAULT_DELAY ) {
0 commit comments