본문으로 건너뛰기

ZSSkeleton

콘텐츠를 불러오는 동안 자리를 유지하고 광택 효과를 표시합니다.

컴포넌트용도
ZSSkeleton실제 콘텐츠를 감싸 loading 동안 흐리게 두고 광택을 덮습니다
ZSSkeleton.Box고정 높이의 자리 표시 상자 — 광택이 지나갑니다(원 자리는 면만)

기본 사용법​

import { View } from 'react-native';
import { ZSSkeleton, ZSText } from '@0610studio/zs-ui';

<ZSSkeleton loading={isFetching}>
<ZSText variant="h4" emphasized>{profile?.name ?? '이름'}</ZSText>
<ZSText color="textSecondary">{profile?.bio ?? '소개 문구가 들어갑니다'}</ZSText>
</ZSSkeleton>

<View style={{ gap: 12 }}>
<ZSSkeleton.Box height={180} radius="lg" />
<ZSSkeleton.Box height={20} style={{ width: '60%' }} />
<ZSSkeleton.Box height={48} radius="full" style={{ width: 48 }} />
</View>
  • ZSSkeleton은 loading이 false면 children만 그립니다. true면 children을 50% 불투명도로 두고 그 위에 광택을 덮습니다.
  • 두 컴포넌트 모두 폭은 부모 폭입니다.

Props — ZSSkeletonProps​

PropTypeDefault설명
loadingbooleantruetrue면 흐리게 + 광택, false면 children만
shimmerColorstring라이트 colors.background · 다크 colors.text광택 색
shimmerOpacitynumber0.6광택 띠 중심 불투명도(0~1). shimmerColor가 hex(#RRGGBB)일 때 적용됩니다
durationnumber1100한 번 지나가는 시간(ms). iOS 동작 줄이기에서는 맥박이 한 번 밝아지는 시간
...propsViewPropsundefinedstyle·children 등

Props — ZSSkeletonBoxProps​

PropTypeDefault설명
heightnumberRequired높이
backgroundColorColorName | string'surface4'자리 표시 색
radiusRadiusToken'sm'모서리. 'full'이고 style.width가 height와 같으면(아이콘·아바타 같은 원 자리) 광택 없이 면만 그립니다
shimmerColorstring라이트 colors.surface2 · 다크 자리 색(기본 surface4)을 text 쪽으로 12% 밝힌 색광택 색
shimmerOpacitynumber0.7광택 띠 중심 불투명도(0~1). shimmerColor가 hex(#RRGGBB)일 때 적용됩니다
durationnumber1100한 번 지나가는 시간(ms). iOS 동작 줄이기에서는 맥박이 한 번 밝아지는 시간
...propsViewPropsundefinedstyle 등

ZSSkeletonProps·ZSSkeletonBoxProps 타입을 내보냅니다.

광택 모양​

ZSSkeleton의 광택은 안쪽 ZSText의 글자 줄 모양으로만 지나가므로 글자 끝 너머 빈 자리에 띠가 생기지 않습니다.

안쪽 내용광택
ZSText글자 줄 모양으로 자름
ZSText가 없음(React Native Text·이미지·View)감싼 영역 전체
ZSText와 다른 내용이 섞임글자 줄에만 — 이미지 같은 다른 내용은 흐리게만 둡니다. 따로 광택이 필요하면 ZSSkeleton을 나누거나 ZSSkeleton.Box로 자리를 잡으세요

버튼 라벨처럼 다른 zs-ui 컴포넌트 안의 ZSText도 줄 모양으로 셉니다.

접근성​

  • loading 동안 busy 상태를 알립니다.
  • 시스템 '동작 줄이기'가 켜져 있으면 광택 띠가 지나가지 않습니다(HIG Accessibility).
iOSAndroid
동작 줄이기띠가 지나가는 대신 광택 자리(광택 모양) 전체가 duration에 걸쳐 느리게 밝아졌다 같은 시간에 돌아옵니다(이동 없는 불투명도 맥박)광택 없이 멈춘 자리 표시만 둡니다('애니메이션 삭제'를 따릅니다)

관련 문서​

  • Loader — 화면을 막는 진행 표시
  • 토큰 — RADIUS