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-observer
or NPM:
npm install react-native-intersection-observer --save
You 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 . |