'use client'
import React, { useEffect, useState } from 'react'
import { lockScrollbars } from 'lock-scrollbars'
function Modal({ open, children }) {
const dialogRef = React.useRef(null)
const unlockScrollbars = React.useRef(null)
useEffect(() => {
const dialogNode = dialogRef.current
if (dialogNode) {
if (open) {
dialogNode.showModal()
unlockScrollbars.current = lockScrollbars()
} else {
dialogNode.close()
unlockScrollbars.current?.()
}
}
}, [open])
return <dialog ref={dialogRef}>{children</dialog>
}Installation
npm install lock-scrollbarsUsage
Lock and unlock scrollbars programmatically using lockScrollbars.
Example
Open an example modal to lock the scrollbar.