ScrollLock 是一个无内容的 React 组件,用于声明式地防止模态 UI 的滚动渗透到页面主体。该组件将 lockscroll 类应用于 document.documentElement 和 document.scrollingElement 元素,以阻止主体滚动。当它存在时,锁定即生效。
用法
在模态 UI 中声明滚动锁定。
import { useState } from 'react';
import { ScrollLock, Button } from '@wordpress/components';
const MyScrollLock = () => {
const [ isScrollLocked, setIsScrollLocked ] = useState( false );
const toggleLock = () => {
setIsScrollLocked( ( locked ) => ! locked ) );
};
return (
<div>
<Button variant="secondary" onClick={ toggleLock }>
Toggle scroll lock
</Button>
{ isScrollLocked && <ScrollLock /> }
<p>
Scroll locked:
<strong>{ isScrollLocked ? 'Yes' : 'No' }</strong>
</p>
</div>
);
};