Skip to content

alloc/use-element-size

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 

use-element-size

Track the size of a react-dom element (without ResizeObserver).

Only 540 bytes min+gzip!

Usage

import React from 'react'
import { useElementSize } from 'use-element-size'

const Example = () => {
  const ref = useElementSize((size, prevSize, elem) => {
    console.log({ size, prevSize, elem })
  })
  return (
    <div
      ref={ref}
      style={{
        position: 'relative',
        width: '50%',
        height: '50%',
      }}
    />
  )
}

Quirks

  • ⚠️ Be sure the tracked element never has position: static.

  • The size parameter is null when the tracked element is unmounted.

  • The prevSize parameter is null when the tracked element was just mounted.

  • Tracking stops when useElementSize is passed false/null/undefined instead of a function.

  • The callback waits until the next requestAnimationFrame tick before running.

  • The Size and SizeCallback types are exported for your convenience.

Demo

https://codesandbox.io/s/use-element-size-demo-dszk1?file=/src/index.tsx

About

Track the size of a react-dom element in 540 bytes (without ResizeObserver)

Topics

Resources

License

Stars

Watchers

Forks