Skip to main content

useScrollLock

The useScrollLock hook is a custom React hook used to manage the scroll lock state on the document body. It provides an easy way to lock or unlock scrolling, which can be useful for modals, dialogs, or any scenario where you need to control the scrolling behavior.

Usage

Installation

You can import the useScrollLock hook from the hookstorm package like this:

import { useScrollLock } from "hookstorm";

Parameters

  • initialLock: (optional) A boolean representing the initial scroll lock state. Defaults to false.

Return Values

The useScrollLock hook returns the following object:

  • isLocked: A boolean indicating whether the scroll is currently locked.
  • toggleScrollLock: A function to toggle the scroll lock state. If a value is provided, it sets the state to that value.

Example Usage

The following example demonstrates how to use the useScrollLock hook within a functional component:

import { ReactElement } from "react";
import { useScrollLock } from "hookstorm";

export default function ScrollLockComponent(): ReactElement {
const { isLocked, toggleScrollLock } = useScrollLock();

return (
<div>
<button onClick={() => toggleScrollLock(true)}>Lock Scroll</button>
<button onClick={() => toggleScrollLock(false)}>Unlock Scroll</button>
<p>Scroll is {isLocked ? "locked" : "unlocked"}</p>
</div>
);
}

Explanation

In the example above:

  • The useScrollLock hook is used to manage the scroll lock state of the document body.
  • The isLocked variable indicates whether the scroll is locked or not.
  • The toggleScrollLock function allows you to lock or unlock scrolling based on the value passed or by toggling the current state.
  • The component displays buttons to lock or unlock the scroll, and a message showing the current scroll lock state.

Conclusion

useScrollLock is a practical hook for controlling the scroll behavior of your application, especially when you need to manage scrolling during modal displays or other focused interactions.