fc2ブログ

[React]要素の横幅を取得するcustom hook

指定した要素の横幅のサイズを取得したい場合のカスタムフック。
※ heightにすれば高さも取得が可能

Custom hook

const useElementWidth = (targetElement: RefObject) => {
const [width, setWidth] = useState(0);

useEffect(() => {
const handleResize = () => {
if (targetElement?.current) {
const { width } = targetElement.current.getBoundingClientRect()
setWidth(width)
}
}
window.addEventListener('resize', handleResize)
handleResize()
return () => window.removeEventListener('resize', handleResize)
}, [])

return width
}

window resize イベントのリスナーをセットしたのは、ブラウザのウインドウサイズを変更した時に動的に要素の幅も再計算されるようにするため。

使用する側

const Sample = () => {
const targetElement = useRef(null);
const width = useElementWidth(targetElement)

useEffect(() => {
console.log(width)
}, [width])

return (

xxxxx

)

コメントの投稿

非公開コメント

プロフィール

hiiro

Author:hiiro

最新記事
カテゴリ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
QRコード
QR
Counter