Skip to content

React component-wrapper detecting size changes of its children

License

Notifications You must be signed in to change notification settings

berrtech/react-size-reporter

Repository files navigation

react-size-reporter npm

React component-wrapper detecting size changes of its children.

Heavily inspired by react-height but somehow it wasn't accurate enough so I tried to make my own implementation. This implementation uses ResizeSensor from css-element-queries

Installation

NPM

npm install --save react react-dom react-size-reporter

If you are using react v0.14 consider installing react-size-reporter@^1.0.5

Don't forget to manually install peer dependencies (react, react-dom) if you use npm@3.

Usage

import SizeReporter from 'react-size-reporter';

<SizeReporter onSizeChange={({height, width}) => console.log(height, width)}>
  <div>CONTENT GOES HERE</div>
  <div>AND HERE</div>
</SizeReporter>

Options

onSizeChange: PropTypes.func.isRequired

Callback called on mount and size changes

children: PropTypes.node.isRequired

Children with static or dynamic height or width

Pass-through props

You can pass any valid props, like style or className to SizeReporter, they will be applied to container

Public methods

reattachResizeListener

Use this if for any reason onSizeChange doesn't trigger anymore

reattach = () => this.sizeReporter.reattachResizeListener()

render(){
  return (
  <SizeReporter
    onSizeChange={({height, width}) => console.log(height, width)}
    ref={ref => ref ? this.sizeReporter = ref : null}
  >
    <div>CONTENT GOES HERE</div>
    <div>AND HERE</div>
    <button type='button' onClick={this.reattach}>Reattach!</button>
  </SizeReporter>
  )
}

Run

To run example, use npm start and then go to http://localhost:8080

License

MIT

About

React component-wrapper detecting size changes of its children

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published