Skip to content

会话超时 Hooks:useIdleTimeout ​

useIdleTimeout 监听页面活动(点击 / 按键 / 滚轮 / 触摸 / 移动节流),无操作接近超时时进入预警期(warnBefore 提前量),倒计时归零触发锁定;期间任何活动即重置。金融 / 政务合规端的「临时离席锁」标配,与 BizLockScreen 配合:onTimeout 锁屏、解锁后 unlock() 重新计时。

基本用法 ​

vue
<script setup lang="ts">
import { ref } from 'vue'
import { useIdleTimeout } from 'vue3-ep-biz-lib'

const locked = ref(false)

const idle = useIdleTimeout({
  timeout: 15 * 60 * 1000, // 15 分钟无操作超时
  warnBefore: 60 * 1000, // 最后 1 分钟预警
  onWarn: () => showMessage('长时间未操作,即将锁定屏幕'),
  onTimeout: () => (locked.value = true),
})

const onUnlock = (): void => {
  locked.value = false
  idle.unlock() // 重新开始计时
}
</script>

API ​

useIdleTimeout(options): UseIdleTimeoutReturn ​

成员类型说明
remainingRef<number>剩余毫秒(秒级步进,可做倒计时展示)
warningRef<boolean>是否处于预警期
lockedRef<boolean>是否已锁定(超时或手动 lock)
reset() => void手动重置计时(等同发生一次活动)
lock() => void手动锁定(立即触发 onTimeout,不重复触发)
unlock() => void解锁并重新计时

options ​

属性类型默认值说明
timeoutnumber1800000无操作超时毫秒(30 分钟)
warnBeforenumber60000预警提前量毫秒(0 不预警)
eventsstring[]click / keydown / wheel / touchstart / pointermove视为「活动」的事件
onWarn(remaining) => void—进入预警期
onTimeout() => void—超时(锁定 / 登出时机)
onCancel() => void—预警后有活动,取消倒计时