useIntersectionObserver

一个简易使用 Intersection Observer API 的 React 钩子。

演示

尝试向下滚动查看效果。

源码
isIntersecting:
false
intersectionRatio:
0
Not intersecting

用法

请查看 API。

源码

点击下方链接跳转 GitHub 查看源代码。

API

const obsererReturn = useIntersectionObserver(elementTarget, options)

元素目标 ElementTarget

ElementTarget 是一个联合类型,代表可以被定位的各种元素。

更多详情,请参见 ElementTargetElementTarget 类型

选项 Options

export interface UseWebObserverOptions {
  /**
   * 调用此函数后立即开始观察
   *
   * @defaultValue true
   */
  immediate?: boolean
}

/**
 * DOM 内建的 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

返回值

Retuerns contain Pausable instance that can be paused, resumed.

See Pausable for more details.

export interface UseWebObserverReturns<Observer> extends Pausable {
  /**
   * 持有观察者实例的 ref
   */
  observerRef: React.MutableRefObject<Observer | null>
  /**
   * 检查当前环境是否支持观察者
   */
  isSupported: boolean
}

export type UseIntersectionObserverReturns = UseWebObserverReturns<IntersectionObserver>