add useMeasure story

This commit is contained in:
lintuming 2019-08-28 09:28:28 +08:00
parent fea782051e
commit 4deb48b35e
3 changed files with 31 additions and 2 deletions

View File

@ -0,0 +1,27 @@
import { storiesOf } from '@storybook/react';
import React from 'react';
import { useMeasure } from '..';
import ShowDocs from './util/ShowDocs';
const Demo = () => {
const [ref, { width, height }] = useMeasure();
return (
<>
<div>width: {width}</div>
<div>height: {height}</div>
<div
style={{
background: 'red',
}}
ref={ref}
>
resize me
</div>
</>
);
};
storiesOf('Sensors|useMeasure', module)
.add('Docs', () => <ShowDocs md={require('../../docs/useMeasure.md')} />)
.add('Demo', () => <Demo />);

View File

@ -85,3 +85,4 @@ export { default as useVideo } from './useVideo';
export { useWait, Waiter } from './useWait';
export { default as useWindowScroll } from './useWindowScroll';
export { default as useWindowSize } from './useWindowSize';
export { default as useMeasure } from './useMeasure';

View File

@ -1,6 +1,5 @@
import { useCallback, useState } from 'react';
import ResizeObserver from 'resize-observer-polyfill';
export interface ContentRect {
width: number;
height: number;
@ -23,7 +22,9 @@ const useMeasure = <T>(): [(instance: T) => void, ContentRect] => {
() =>
new ResizeObserver(entries => {
const entry = entries[0];
set(entry.contentRect);
if (entry) {
set(entry.contentRect);
}
})
);