Skip to content

useOverlay

全屏遮罩共享行为:Escape 关闭 + body 滚动锁。LxModal / LxDrawer 内部即用它。

用法

ts
import { useOverlay } from '@luxeanor/ui'

// open 可以是 Ref<boolean> 或 () => boolean
useOverlay(() => props.modelValue, close)

API

useOverlay(open: Ref<boolean> | (() => boolean), close: () => void): void

行为与边界:

  • open 变 true:监听 Escape、锁 body 滚动;变 false:解除
  • 滚动锁是引用计数的——叠层浮层(Modal 上再开 Drawer)不会提前解锁
  • 组件卸载时若仍打开,自动解锁
  • SSR 安全(不触碰 document)