UNPKG

react-idle-timer

Version:
62 lines (54 loc) • 1.64 kB
/* eslint-disable react-hooks/exhaustive-deps */ import React, { useState, useEffect } from 'react' import { format } from 'date-fns' import { useIdleTimer } from 'react-idle-timer' export default function App () { const timeout = 3000 const [remaining, setRemaining] = useState(timeout) const [elapsed, setElapsed] = useState(0) const [lastActive, setLastActive] = useState(+new Date()) const [isIdle, setIsIdle] = useState(false) const handleOnActive = () => setIsIdle(false) const handleOnIdle = () => setIsIdle(true) const { reset, pause, resume, getRemainingTime, getLastActiveTime, getElapsedTime } = useIdleTimer({ timeout, onActive: handleOnActive, onIdle: handleOnIdle }) const handleReset = () => reset() const handlePause = () => pause() const handleResume = () => resume() useEffect(() => { setRemaining(getRemainingTime()) setLastActive(getLastActiveTime()) setElapsed(getElapsedTime()) setInterval(() => { setRemaining(getRemainingTime()) setLastActive(getLastActiveTime()) setElapsed(getElapsedTime()) }, 1000) }, []) return ( <div> <div> <h1>Timeout: {timeout}ms</h1> <h1>Time Remaining: {remaining}</h1> <h1>Time Elapsed: {elapsed}</h1> <h1>Last Active: {format(lastActive, 'MM-dd-yyyy HH:MM:ss.SSS')}</h1> <h1>Idle: {isIdle.toString()}</h1> </div> <div> <button onClick={handleReset}>RESET</button> <button onClick={handlePause}>PAUSE</button> <button onClick={handleResume}>RESUME</button> </div> </div> ) }