17 lines
415 B
JavaScript
17 lines
415 B
JavaScript
import {useLayoutEffect, useState} from 'react'
|
|
import useResizeObserver from '@react-hook/resize-observer'
|
|
|
|
export default function useRect(target) {
|
|
const [rect, setRect] = useState();
|
|
useLayoutEffect(() => {
|
|
setRect(target.current.getBoundingClientRect())
|
|
}, [target]);
|
|
useResizeObserver(
|
|
target,
|
|
(entry) => {
|
|
setRect(entry.target.getBoundingClientRect());
|
|
},
|
|
);
|
|
return rect;
|
|
}
|