Skip to content
훅으로 돌아가기

useSkeleton

@hua-labs/hua/motion

스켈레톤 로딩 UI 상태 관리

설치

bash
npm install @hua-labs/hua
Import
tsx
import { useSkeleton } from "@hua-labs/hua/framework";

@hua-labs/motion-core의 모션 훅을 @hua-labs/hua/framework에서 통합 제공합니다.

UI 컴포넌트, 모션 훅, i18n을 하나의 패키지로 사용할 수 있습니다.

기본 사용법

tsx
const skeleton = useSkeleton({
  height: 20,
  width: "100%",
  borderRadius: 4,
  wave: true,
});

return (
  <div>
    {isLoading ? (
      <div ref={skeleton.ref} style={skeleton.style} />
    ) : (
      <p>{content}</p>
    )}
  </div>
);

docs:hooks.use-skeleton.examples.cardSkeletonPlaceholder

tsx
function CardSkeleton() {
  const titleSkeleton = useSkeleton({ height: 24, width: "60%", borderRadius: 4 });
  const lineSkeleton1 = useSkeleton({ height: 16, width: "100%", borderRadius: 4 });
  const lineSkeleton2 = useSkeleton({ height: 16, width: "80%", borderRadius: 4 });
  const imageSkeleton = useSkeleton({ height: 160, width: "100%", borderRadius: 8 });

  return (
    <div className="p-4 border rounded-lg space-y-3">
      <div ref={imageSkeleton.ref} style={imageSkeleton.style} />
      <div ref={titleSkeleton.ref} style={titleSkeleton.style} />
      <div ref={lineSkeleton1.ref} style={lineSkeleton1.style} />
      <div ref={lineSkeleton2.ref} style={lineSkeleton2.style} />
    </div>
  );
}

API 레퍼런스

옵션

이름타입기본값설명
durationnumber1500docs:hooks.use-skeleton.options.duration
easingstring"ease-in-out"docs:hooks.use-skeleton.options.easing
backgroundColorstring"#f0f0f0"docs:hooks.use-skeleton.options.backgroundColor
highlightColorstring"#e0e0e0"docs:hooks.use-skeleton.options.highlightColor
motionSpeednumber1500docs:hooks.use-skeleton.options.motionSpeed
heightnumber20docs:hooks.use-skeleton.options.height
widthnumber | string"100%"docs:hooks.use-skeleton.options.width
borderRadiusnumber4docs:hooks.use-skeleton.options.borderRadius
wavebooleantruedocs:hooks.use-skeleton.options.wave
pulsebooleanfalsedocs:hooks.use-skeleton.options.pulse
autoStartbooleantruedocs:hooks.use-skeleton.options.autoStart

반환값

이름타입설명
refRefObject<T | null>docs:hooks.use-skeleton.returns.ref
styleCSSPropertiesdocs:hooks.use-skeleton.returns.style
isVisiblebooleandocs:hooks.use-skeleton.returns.isVisible
isAnimatingbooleandocs:hooks.use-skeleton.returns.isAnimating
progressnumberdocs:hooks.use-skeleton.returns.progress
start() => voiddocs:hooks.use-skeleton.returns.start
stop() => voiddocs:hooks.use-skeleton.returns.stop
reset() => voiddocs:hooks.use-skeleton.returns.reset
pause() => voiddocs:hooks.use-skeleton.returns.pause
resume() => voiddocs:hooks.use-skeleton.returns.resume

사용 사례

로딩 상태

데이터 로딩 중 시각적 피드백

콘텐츠 플레이스홀더

로딩 중 스켈레톤 UI 표시

카드 리스트

카드 그리드 스태거 애니메이션

데이터 페칭

API 요청 중 로딩 인디케이터