React Hook to figure out DOM Element dimensions with updates
npm install use-element-dimensionsuse-element-dimensions  !CircleCI !npm !npm bundle sizeReact Hook to figure out DOM Element dimensions with updates
``jsx
import useDimensions from "use-element-dimensions";
const Example = () => {
const [{ width, height }, ref] = useDimensions();
return (
$3
The first item in the tuple returned by the hook includes all properties of the latest
ResizeObserverEntry for the specific element.####
borderBoxSizeAn object containing the new border box size of the observed element when the callback is run.
####
contentBoxSizeAn object containing the new content box size of the observed element when the callback is run.
####
contentRectA DOMRectReadOnly object containing the new size of the observed element when the callback is run. Note that this is better supported than the above two properties, but it is left over from an earlier implementation of the Resize Observer API, is still included in the spec for web compat reasons, and may be deprecated in future versions.
####
targetA reference to the Element or SVGElement being observed.
The
DOMRect returned by target.getBoundingClientRect also lends its properties to this value.####
xThe x coordinate of the DOMRect's origin.
####
yThe y coordinate of the DOMRect's origin.
####
widthThe width of the DOMRect.
####
heightThe height of the DOMRect.
####
topReturns the top coordinate value of the DOMRect (has the same value as y, or y + height if height is negative.)
####
rightReturns the right coordinate value of the DOMRect (has the same value as x + width, or x if width is negative.)
####
bottomReturns the bottom coordinate value of the DOMRect (has the same value as y + height, or y if height is negative.)
####
leftReturns the left coordinate value of the DOMRect (has the same value as x, or x + width if width is negative.)
$3
There are already some hook libraries that provide dimensions on first render or even update them on
window resize event, however in many cases this may not be sufficient. HTML DOM Elements can resize in response to a lot of things we don't expect, only one of which is screen size, for example:- When animating any of the size properties.
- Setting a size properties on an encapsulating DOM Node.
- Orientation change (
resize triggers in this case - or it should).$3
Everything in this package is in
src/index.ts. If you want to run an example to develop against, install parcel globally and then run parcel example/simple/index.html from the root directory of the project.$3
Run
yarn build to build for the three targets specified.$3
Integration tests use Cypress, because it is hard to do unit tests for hooks and viewport resizing.
$3
The examples live in the
example directory. To run any of them, make sure devDependencies are installed and run yarn parcel example/