React Native implementation of the Intersection Observer API to tell you when an element enters or leaves the viewport.
Install using Yarn:
yarn add react-native-intersection-observeror NPM:
npm install react-native-intersection-observer --saveYou can pass any component to the <InView />, and it will handle creating the
wrapping View component. Add a handler to the onChange method, and control the
state in your own component. Any extra props you add to <InView> will be
passed to the View component, allowing you to set the style, etc.
import { IOScrollView, InView } from 'react-native-intersection-observer'
const Component = () => (
<IOScrollView>
<InView onChange={(inView: boolean) => console.log('Inview:', inView)}>
<Text>Plain children are always rendered. Use onChange to monitor state.</Text>
</InView>
</IOScrollView>
)
export default Component| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| rootMargin | { top: number; left: number; right: number; bottom: number } | undefined | false | root margin |
The <InView /> component also accepts the following props:
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| as | ComponentType |
View | false | Render the wrapping element as this element. Defaults to View. |
| children | ReactNode |
true | Children expects a plain child, to have the <InView /> deal with the wrapping element. |
|
| triggerOnce | boolean | false | false | Only trigger this method once |
| onChange | (inView: boolean) => void |
false | Call this function whenever the in view state changes. It will receive the inView boolean, alongside the current IntersectionObserverEntry. |