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、
null和undefined。 locked为false时不会锁定;已锁定的目标会恢复原始样式。