react-use-observer

Performant react hooks for WebApi Observers
Features
- Hooks for
- Optimizes performance by re-using same Observers for same settings through the app
- Supports three shaking
Does not include pollyfills for ResizeObserver
and IntersectionObserver
if you need to support older browsers please include polyfills for them.
Install
npm install react-use-observer
or
npm install --save react-use-observer
Usage
Returns
[ref: React Ref, entry: ResizeObserverEntry]
Example
import { useResizeObserver } from 'react-use-observer'
const App = () => {
const [ref, resizeObserverEntry] = useResizeObserver()
const { width = 0 } = resizeObserverEntry.contentRect || {}
return (
<div ref={ref}>
width: {width}
</div>
)
}
Parameters
Returns
[ref: React Ref, entry: IntersectionObserverEntry]
Example
import { useIntersectionObserver } from 'react-use-observer'
const MyComp = () => {
const [ref, intersectionObserverEntry] = useIntersectionObserver({
root: null,
rootMargin: '0px',
threshold: 0.5
})
return (
<div ref={ref}>
{intersectionObserverEntry.intersectionRatio}
</div>
)
}
Parameters
Returns
[ref: React Ref, entry: MutationRecord]
Example
import { useMutationObserver } from 'react-use-observer'
const MyComp = () => {
const [ref, mutationRecord] = useMutationObserver({
attributes: true,
childList: true,
subtree: true,
})
return (
<div>
Mutation Type { mutationRecord.type }
</div>
)
}
useObserver
Parameters
Returns
[ref: React Ref, entry: ObserverEntry]
Example
import { useObserver } from 'react-use-observer'
const MyComp = () => {
const [ref, entry] = useObserver(PerformanceObserver, {
subscribeOptions: {
entryTypes: ['frame'],
},
})
return (
<div>
Entry Type { entry.entryType }
</div>
)
}
All WebApi Observers
License
MIT © ardaogulcan