Skip to content

useScrollLock

锁定文档或元素的滚动,并在卸载或关闭时恢复原始样式。

签名

ts
function useScrollLock(locked?: boolean): void;
function useScrollLock(target: ResolvableTarget<Document | HTMLElement>, locked?: boolean): void;

基本用法

关键行为

  • 不传 target 时默认锁定当前 document.body
  • 传入 Document 时锁定该文档的 body;传入 HTMLElement 时锁定元素自身。
  • 多个锁作用在同一目标上时会计数,最后一个锁释放后才恢复样式。
  • 锁定 body 时会按滚动条宽度补偿 padding-right,减少页面横向抖动。

注意事项

  • target 支持 DOM 对象、React ref、nullundefined
  • lockedfalse 时不会锁定;已锁定的目标会恢复原始样式。