UNPKG

rc-target-size

Version:

a tool help get size of element for React, support higher-order component and component render.

178 lines (134 loc) 5.71 kB
# About [![npm version][npm-version-image]][npm-url] [![npm downloads][npm-downloads-image]][npm-url] [![github issues][github-issues-image]][github-issues-url] [![build status][travis-image]][travis-url] A tool help get size of element for React, support higher-order component and component render. You can get the size of the element using a row without changing any of the elements! ## Reference ### rc-pure-component A wrapper use pure component wrap stateless functional components to class use pure component to reduce re-render. [read more](https://www.npmjs.com/package/rc-pure-component) ### resize-observer-polyfill A polyfill for the resize observer api. [read more](https://www.npmjs.com/package/resize-observer-polyfill) # Installation ```bash # use npm $ npm install rc-target-size # or yarn $ yarn add rc-target-size ``` ## CDN ```html // unpkg <script src="https://unpkg.com/rc-target-size/dist/rc-target-size.js"></script> // jsdelivr <script src="https://cdn.jsdelivr.net/npm/rc-target-size/dist/rc-target-size.js"></script> ``` **Note** use CDN in browser, you can call `rcTargetSize` from Window API. it is available at `window.rcTargetSize` # Usage ## Component render [read more](https://github.com/lamhieu-vk/rc-target-size/blob/master/examples/component.js) ```javascript import React from "react"; import { TargetSize } from "rc-target-size"; const ResizeOfMe = ({ width, height }) => ( <div> component - size of me: {width}x{height} </div> ); const onSize = data => console.log("onSize", data); const App = () => ( <div> // simple <TargetSize> <ResizeOfMe /> </TargetSize> // or use with config <TargetSize mode="debounce" rate={1000} handleHeight onSize={onSize}> <ResizeOfMe /> </TargetSize> </div> ); export default App; ``` ## HOC render [read more](https://github.com/lamhieu-vk/rc-target-size/blob/master/examples/hoc.js) ```javascript import React from "react"; import { targetSize } from "rc-target-size"; const ResizeOfMeWrapped = ({ width, height }) => ( <div> hoc - size of me: {width}x{height} </div> ); // simple const ResizeOfMe = targetSize()(ResizeOfMeWrapped); // or use with config const ResizeOfMe = targetSize({ mode: "debounce", rate: 1000, handleWidth: true, onSize: data => console.log("onSize", data), })(ResizeOfMeWrapped); const App = () => ( <div> <ResizeOfMe /> </div> ); export default App; ``` ## Child function [read more](https://github.com/lamhieu-vk/rc-target-size/blob/master/examples/childFunction.js) ```javascript import React from "react"; import { TargetSize } from "rc-target-size"; const onSize = data => console.log("onSize", data); const App = () => ( <div> // simple <TargetSize> {({ width, height }) => ( <div> child function - size of me: {width}x{height} </div> )} </TargetSize> // or use with config <TargetSize mode="debounce" rate={1000} handleHeight onSize={onSize}> {({ width, height }) => ( <div> child function - size of me: {width}x{height} </div> )} </TargetSize> </div> ); export default App; ``` # Documents ## Config | name | type | description | | -------------- | ------- | ---------------------------------------------------------------------------------------------------------------------- | | mode | String | (optional) values is 'debounce' or 'throttle', mode refresh size of component when resize. default: 'throttle' | | rate | Number | (optional) rate refresh size of component when resize, measurement is milliseconds. default: 500 | | querySelector | String | (optional) if you do not want to get the size of the current element, you can take another element. default: undefined | | handleWidth | Boolean | (optional) only update value when width resized. default: false | | handleHeight | Boolean | (optional) only update value when height resized. default: false | | handleOffset | Boolean | (optional) only update value when offset changed. default: false | | updateOnChange | Boolean | (optional) will received values since the initial creation? default: true | | onSize | Func | (optional) function callback on have size. default: undefined | ## Props values return to your components, append to props | name | type | description | | --------- | ------- | ------------------------------------------ | | width | Number | width of element. default: 0 | | height | Number | height of element. default: 0 | | offset | Object | offset of element. default: { x: 0, y: 0 } | | canUseDOM | Boolean | the test was able to use DOM or not | [npm-url]: https://npmjs.org/package/rc-target-size [npm-version-image]: https://badge.fury.io/js/rc-target-size.svg [npm-downloads-image]: https://img.shields.io/npm/dm/rc-target-size.svg [github-issues-image]: https://img.shields.io/github/issues/lamhieu-vk/rc-target-size.svg [github-issues-url]: https://github.com/lamhieu-vk/rc-target-size/issues [travis-image]: https://travis-ci.com/lamhieu-vk/rc-target-size.svg?branch=master [travis-url]: https://travis-ci.com/lamhieu-vk/rc-target-size?branch=master