안녕하세요. 이번시간에는 React를 사용하면서 유저들에게 더 나은 경험을 제공해주는 스켈레톤 로딩에 대해 알아보도록 하겠습니다!
스켈레톤이란?
스켈레톤을 왜 사용하는가?
언제 사용하면 좋은가?
언제 사용을 안할까?
어떤식으로 사용하면 될까?
import React, { useEffect, useState } from "react";
const article = ({ article }: { article: IArticle }) => {
// * 초기 loading state를 true로 설정
const [loading, setLoading] = useState(true);
// article이 존재해서 로드가 다 되면 loading을 false로
// false가 되면 스켈레톤 이미지가 사라지고 이미지가 노출
// 여기 예제에서는 직관적으로 skeleton이 잘 노출되는지 보기 위해 setimeout을 사용한것입니다.
// 실제 개발에서는 onLoad 이벤트를 주어 load가 모두 완료되었을때 loading state를 false해야합니다.
// 혹은 IntersectionObserver 같은 api를 사용하여 컨텐츠가 보여져야할 시점에 컨텐츠를 노출시키는 로직을
// 사용하면 됩니다.
useEffect(() => {
if (article) {
setTimeout(() => {
setLoading(false);
}, 3000);
}
}, [article]);
return (
<>
{loading ? (
<SkeletonCard />
) : (
<>
.... 이곳에 정상적으로 노출시킬 컴포넌트를 렌더링 시킵니다.
</>
)}
</>
);
};
export default article;
이상 React에서 Skeleton 컴포넌트를 만드는 방법을 간단하게 알아보았습니다!
감사합니다 :)