모든 컴포넌트

MotionNumber · MotionText

자리마다 바퀴처럼 구르는 숫자. 생기고 사라지는 자리까지.

웹React Native숫자와 글

직접 해 보기

예제를 준비하는 중…

가장 짧은 사용법

Total.jsx
<MotionNumber value={count} />
<MotionNumber value={total} mode="roll" intl locale="en-US"
  format={{ style: 'currency', currency: 'USD' }} />
<MotionText>{status}</MotionText>

대신 처리하는 일

  • 올림: 999 → 1,000에서 바뀌는 모든 자리가 주행 거리계처럼 같은 방향으로 구릅니다.
  • 생기거나 사라지는 자리는 툭 나타나지 않고 자기 열에서 굴러 들어오고 나갑니다.
  • 구분 기호, 부호, 통화 기호는 자기가 속한 자리와 함께 나타나고 사라집니다.
  • 남는 자리는 구르면서 새 위치로 미끄러지므로 숫자가 갈라지지 않습니다.
  • 움직이는 도중에 새 값이 오면 화면에 보이는 모습 그대로에서 이어갑니다.
  • Intl이 필요 없습니다. 글자나 format 함수를 넘기고, 원할 때만 intl을 켜세요.

이럴 때 쓰세요

  • 상품을 담을 때마다 바뀌는 장바구니 합계.
  • 실시간 카운터나 점수.
  • 몇 초마다 새로 고치는 대시보드 수치.

Props

MotionNumber

Prop타입기본값설명
valuenumber | bigint | string—필수숫자, 또는 호출자가 서식을 입힌 숫자 글자.
mode'replace' | 'roll''replace'replace는 바뀐 자리를 한 칸 옮기고, roll은 사이의 숫자를 거쳐 갑니다.
direction'auto' | 'digit' | 'up' | 'down''auto'auto는 크기 변화를 따라 올림이 한 방향으로 구르고, digit은 자리마다 따로 비교합니다.
staggernumber45일의 자리부터 바깥으로, 바뀐 자리 사이의 밀리초. 전체 물결 시간은 제한됩니다.
format(value) => string | Intl.NumberFormatOptions보여 줄 글자를 돌려주는 함수, 또는 Intl.NumberFormat 옵션(intl과 함께).
intlbooleanfalse내장 Intl.NumberFormat을 씁니다. 기본으로 꺼져 있어 어떤 런타임도 Intl이 필요 없습니다.
localestring | string[]intl에 쓸 로캘.
prefixstring숫자 앞 글자.
suffixstring숫자 뒤 글자.
transitionTransitionspring시간 곡선 { duration, easing } 또는 스프링 { tempo: 'spring', spring }. 스프링은 끊겨도 속도를 이어갑니다.
onMotionComplete(value) => void자리가 모두 멈추면 값과 함께 실행됩니다.

MotionText

Prop타입기본값설명
childrenReactNode보여 줄 글자.
aselement'span'그릴 요소.
transitionTransitionspring시간 곡선 { duration, easing } 또는 스프링 { tempo: 'spring', spring }. 스프링은 끊겨도 속도를 이어갑니다.
onMotionComplete(text) => void움직임이 멈추면 실행됩니다.

그 밖의 props는 그려지는 요소로 전달되므로 className, style, 이벤트 핸들러를 평소처럼 쓸 수 있습니다.

웹과 React Native

웹에서는 각 자리가 Web Animations API로 재생되는 작은 글자 묶음이며, 글자는 그대로 선택할 수 있습니다. MotionText는 어떤 글자든 움직입니다. 숫자 글자는 자리마다 구르고 다른 글자는 교체됩니다.

React Native에서는 숫자가 진짜 Text로 남아 레이아웃·선택·접근성이 그대로이며 줄바꿈과 numberOfLines도 동작합니다. 글자는 네이티브 드라이버로 움직입니다.

이 컴포넌트를 쓰는 예제

검색

입력하면 문서를 검색합니다.