useIdle

Detect user idle state.

Import

import { useIdle } from '@tidbcloud/uikit'

Usage

useIdle detects if the user does nothing for a given time in ms.

import { useIdle } from '@tidbcloud/uikit'
import { Text } from '@tidbcloud/uikit'
 
function Demo() {
  const idle = useIdle(2000)
 
  return <Text>{idle ? 'User is idle' : 'User is active'}</Text>
}

Custom Events

By default, the hook listens to keypress, mousemove, touchmove, wheel, click, and scroll events. You can customize these:

import { useIdle } from '@tidbcloud/uikit'
 
const idle = useIdle(2000, { events: ['click', 'keypress'] })

Initial State

By default, the hook returns true (idle) on initial render. Change with initialState:

import { useIdle } from '@tidbcloud/uikit'
 
const idle = useIdle(2000, { initialState: false })

Definition

interface UseIdleOptions {
  events?: (keyof DocumentEventMap)[]
  initialState?: boolean
}
 
function useIdle(timeout: number, options?: UseIdleOptions): boolean