Skip to content

useIdle

Category
Export Size
977 B
Last Changed
15 minutes ago

跟踪用户是否处于不活动状态。

Demo

为了演示目的,在此演示中将空闲超时设置为 5秒(默认为1分钟)。
空闲状态: false
非活动时间: 0秒

使用方法

js
import { useIdle } from '@vueuse/core'

const { idle, lastActive } = useIdle(5 * 60 * 1000) // 5 分钟

console.log(idle.value) // true 或 false

程序化重置:

js
import { useCounter, useIdle } from '@vueuse/core'
import { watch } from 'vue'

const { inc, count } = useCounter()

const { idle, lastActive, reset } = useIdle(5 * 60 * 1000) // 5 分钟

watch(idle, (idleValue) => {
  if (idleValue) {
    inc()
    console.log(`触发了 ${count.value}`)
    reset() // 重新启动空闲计时器。不会更改 lastActive 值
  }
})

组件使用

vue
<template>
  <UseIdle v-slot="{ idle }" :timeout="5 * 60 * 1000">
    是否空闲:{{ idle }}
  </UseIdle>
</template>

类型声明

typescript
export interface UseIdleOptions
  extends ConfigurableWindow,
    ConfigurableEventFilter {
  /**
   * 用于监听检测到的用户活动的事件名称
   *
   * @default ['mousemove', 'mousedown', 'resize', 'keydown', 'touchstart', 'wheel']
   */
  events?: WindowEventName[]
  /**
   * 监听文档可见性变化
   *
   * @default true
   */
  listenForVisibilityChange?: boolean
  /**
   * ref idle 的初始状态
   *
   * @default false
   */
  initialState?: boolean
}
export interface UseIdleReturn {
  idle: Ref<boolean>
  lastActive: Ref<number>
  reset: () => void
}
/**
 * 跟踪用户是否处于非活动状态。
 *
 * @see https://vueuse.org/useIdle
 * @param timeout default to 1 minute
 * @param options IdleOptions
 */
export declare function useIdle(
  timeout?: number,
  options?: UseIdleOptions,
): UseIdleReturn

Source

SourceDemoDocs

贡献者

Anthony Fu
丶远方
wheat
Anthony Fu
Intaek H
nahvego
Hawtim
vaakian X
Jelf
Dan Mindru
btea
Shinigami
Alex Kozack
Antério Vieira

变更日志

v10.0.0-beta.1 on 3/23/2023
f4d35 - feat: add reset capability (#2880)
v9.11.0 on 1/17/2023
d5321 - fix(components): mark defineComponent as pure (#2623)

Released under the MIT License.