정의 : lazy란 '게으른, 가능한 길게 일을 미루는 행우;'를 의미
그래서 ILL이란, 페이지 안에 있는 실제 이미지들을 바로 보여주는게 아닌, 실제로 화면에 보일 필요가 있을 때
로딩할 수 있도록 하는 것
ILL 구현 방법
1. javascript 이벤트를 이용해서 구현
2. Interserction Observer API 이용해서 구현
3. 브라우저 Native Lazy Loading 이용 => loading 속성 이용
구현
LazyImage.jsx 코드
const Lazyimage = ({url, name}) => {
const [isLoading, setIsLoading ] = useState(true);
const [opacity, setOpacity] = useState('opacity-0');
useEffect(() => {
isLoading ? setOpacity('opacity-0') : setOpacity('opacity-100');
}, [isLoading])
return (
<>
{isLoading && (
<div className='absolute h-full z-10 w-full flex items-center justify-center'>
...loading
</div>
)}
<img
src={url}
alt={name}
width="100%"
height="auto"
loading="lazy"
onLoad={() => setIsLoading(false)}
className={`object-contain h-full ${opacity}`}
/>
</>
)
}
'패스트캠퍼스 데브캠프' 카테고리의 다른 글
김민태의 데브캠프 2기 - React Router Dom (0) | 2024.11.13 |
---|---|
김민태의 데브캠프 2기 - useDebounce Coustom Hooks 만들기 (1) | 2024.11.12 |
김민태의 데브캠프 2기 - vite에 대해 알아보자 (1) | 2024.11.12 |
김민태의 데브캠프 2기 - 실시간 강의(11/11) (0) | 2024.11.11 |
김민태의 데브캠프 2기 - Utility type 예시 (0) | 2024.11.11 |