useIdle
跟踪用户是否处于不活动状态。
Demo
使用方法
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
贡献者
Anthony Fu
丶远方
wheat
Anthony Fu
Intaek H
nahvego
Hawtim
vaakian X
Jelf
Dan Mindru
btea
Shinigami
Alex Kozack
Antério Vieira