LazyImage
useIntersectionObserver 를 활용해 Viewport
에 노출될 때 할당된 이미지를 Lazy Loading
하는 이미지 컴포넌트입니다.
Intersection Observer Option을 설정할 수 있습니다.(하단 Note
참고)
만약, 이미지 load
중에 특정 Fallback 컴포넌트
를 노출하고 싶다면, 이를 선언적으로 활용하기 위해 LazyImage를 확장
해서 만든 FallbackLazyImage 컴포넌트 가 있습니다.
Code
Interface
typescript
interface IntersectionObserverInit {
root?: Element | Document | null;
rootMargin?: string;
threshold?: number | number[];
}
typescript
interface LazyImageProps
extends React.ComponentProps<'img'>,
IntersectionObserverInit {
src: string;
}
const LazyImage: React.ForwardRefExoticComponent<
Omit<LazyImageProps, 'ref'> & React.RefAttributes<HTMLImageElement>
>;
Usage
typescript
import { LazyImage } from '@modern-kit/react';
import img1 from '../assets/img1.png';
import img2 from '../assets/img2.png';
const Example = () => {
return (
<div>
{/* ... */}
<LazyImage width={400} height={400} src={img1} alt="img1" />
{/* ... */}
<LazyImage width={400} height={400} src={img2} alt="img2" />
{/* ... */}
</div>
);
};
Example
스크롤 해주세요.