A super simple React hook for scroll lock 🔒
To install the useScrollLock
hook, use the following command:
npm install @yoojinyoung/usescrolllock
To use the useScrollLock
hook, follow these two steps:
- Wrap your application with
ScrollLockProvider
. - Use the
useScrollLock
hook in your component.
In your main application file (e.g., App.jsx
), wrap your application with the ScrollLockProvider
component:
// App.jsx
import { ScrollLockProvider } from "@yoojinyoung/usescrolllock";
function App() {
return (
<ScrollLockProvider>
<YourAppComponents />
</ScrollLockProvider>
);
}
In any component where you want to control the scroll lock, use the useScrollLock
hook:
// SomeComponent.jsx
import { useEffect } from "react";
import { useScrollLock } from "@yoojinyoung/usescrolllock";
function SomeComponent() {
const { lock, release, isScrollLocked } = useScrollLock();
useEffect(() => {
const lockerId = lock();
return () => {
release(lockerId);
};
}, [lock, release]);
console.log(isScrollLocked); // Check if the scroll is locked
return <div>{/* Your component content */}</div>;
}
The useScrollLock
hook provides the following API:
- This function locks the scroll and returns a locker ID, which can be used to release this lock.
- It creates a unique ID if you don't pass an ID, but you can use your own ID if desired.
- This function releases the scroll lock associated with the given locker ID.
- If you do not pass a locker ID, it releases all scroll locks created by this hook.
- This boolean value indicates whether the scroll is currently locked or not.