useIntersectionObserver

A React Hook that uses the Intersection Observer API with ease.

Demo

Try to scroll down to see the effect.

Source
isIntersecting:
false
intersectionRatio:
0
Not intersecting

Usage

See API for more details.

Source

Click links below to view source on GitHub.

API

const obsererReturn = useIntersectionObserver(elementTarget, options)

ElementTarget

ElementTarget is a union type that represents various kinds of elements that can be targeted.

See ElementTarget or ElementTarget Types for more details.

Options

export interface UseWebObserverOptions {
  /**
   * Start the observer immediate after calling this function
   *
   * @defaultValue true
   */
  immediate?: boolean
}

/**
 * DOM built-in IntersectionObserverInit
 *
 * @see https://developer.mozilla.org/zh-CN/docs/Web/API/IntersectionObserver/IntersectionObserver#options
 */
interface IntersectionObserverInit {
  root?: Element | Document | null
  rootMargin?: string
  threshold?: number | number[]
}

export type UseIntersectionObserverOptions = UseWebObserverOptions & IntersectionObserverInit

Returns

Retuerns contain Pausable instance that can be paused, resumed.

See Pausable for more details.

export interface UseWebObserverReturns<Observer> extends Pausable {
  /**
   * ref that holds the observer instance
   */
  observerRef: React.MutableRefObject<Observer | null>
  /**
   * Check if the observer is supported in the current environment
   */
  isSupported: boolean
}

export type UseIntersectionObserverReturns = UseWebObserverReturns<IntersectionObserver>