k8ordo
  • UI
  • Form
  • State
  • Router
  • Static
  • Server
Switch to dark mode
  • Get Started
  • Theming
  • i18n
  • Components
  • Hooks
  • Helpers
  • AI
Open navigation
DOM Interaction
  • useClickAway
  • useHover
  • useResize
  • useScrollDirection
  • useScrollLock
  • useWindowResize
  • useWritingMode
State & Storage
  • useClipboard
  • useControllableState
Timing
  • useDebouncedTransition
  • useDeferredDebounce
  • useInterval
  • useTimeout
Utility
  • useBreakpoint
  • useClient
  • useDisclosure
  • useStep
  • useWindowSize
Observer
  • useIntersectionObserver
  • useInView
k8ordo

React libraries that use Baseline features without holding back.

Packages
  • @k8ordo/ui
  • @k8ordo/form
  • @k8ordo/state
  • @k8ordo/router
  • @k8ordo/static
  • @k8ordo/server
UI
  • Get Started
  • Theming
  • i18n
  • Components
  • Hooks
  • Helpers
  • AI Chat
  • Generative UI
  • AI Agents
  • Storybook
Resources
  • GitHub
  • npm

© 2026 k8o — MIT License

Typeset in Noto Sans JP & M PLUS 2

Hooks

DOM Interaction
  • useClickAway
  • useHover
  • useResize
  • useScrollDirection
  • useScrollLock
  • useWindowResize
  • useWritingMode
State & Storage
  • useClipboard
  • useControllableState
Timing
  • useDebouncedTransition
  • useDeferredDebounce
  • useInterval
  • useTimeout
Utility
  • useBreakpoint
  • useClient
  • useDisclosure
  • useStep
  • useWindowSize
Observer
  • useIntersectionObserver
  • useInView

useIntersectionObserver

A hook that observes element visibility via IntersectionObserver.

Import

Usage

Basic Usage

once

Parameters

ref
Type: RefObject<T | null>
Default: -
callback
Type: (entry: IntersectionObserverEntry) => void
Default: -
options.threshold
Type: number|number[]
Default: 0
options.root
Type: Element|null
Default: null
options.rootMargin
Type: string
Default: '0px'
options.once
Type: boolean
Default: false
PropTypeDefault
refRefObject<T | null>-
callback(entry: IntersectionObserverEntry) => void-
options.thresholdnumber|number[]0
options.rootElement|nullnull
options.rootMarginstring'0px'
options.oncebooleanfalse

Return Value

void
Type: void
Default: -
PropTypeDefault
voidvoid-
import { useIntersectionObserver } from '@k8ordo/ui';
const ref = useRef<HTMLDivElement>(null);

useIntersectionObserver(ref, (entry) => {
  console.log('isIntersecting:', entry.isIntersecting);
}, { threshold: 0.5 });

return <div ref={ref}>Observed element</div>;
const ref = useRef<HTMLDivElement>(null);

useIntersectionObserver(ref, (entry) => {
  if (entry.isIntersecting) {
    // Triggered only once
    loadContent();
  }
}, { once: true });

return <div ref={ref}>Lazy loaded content</div>;