모든 컴포넌트

MotionSwap

크기가 따라가며 서로 교차해 바뀌는 내용.

웹React Native내용과 크기

직접 해 보기

예제를 준비하는 중…

가장 짧은 사용법

SaveButton.jsx
<button onClick={save}>
  <MotionSwap value={status} effect="up">
    {status === 'saving' ? 'Saving…' : status === 'saved' ? 'Saved' : 'Save'}
  </MotionSwap>
</button>;

대신 처리하는 일

  • 요소가 화면의 크기에서 새 내용의 자연 크기로 바뀌므로 버튼이 튀지 않습니다.
  • 이전 내용은 제자리에서 사라지고 새 내용이 나타나며, 교체 중에 어느 쪽도 다시 배치되지 않습니다.
  • 교체 도중 다시 바꾸면 복사본을 쌓지 않고 화면에 보이는 상태에서 이어갑니다.
  • 일반 글자 자식은 그 자체가 value이고, 그 밖에는 value를 넘기세요.

이럴 때 쓰세요

  • 저장 → 저장 중… → 저장됨.
  • 스켈레톤이 프로필 카드로 바뀔 때.
  • 재생 버튼이 일시정지로 바뀔 때.

Props

Prop타입기본값설명
valueunknown내용의 정체. 새 값이면 교체합니다. 일반 글자 자식은 그 자체가 정체입니다.
childrenReactNode내용.
aselement'span'그릴 요소.
inlinebooleanas === 'span'true는 내용에 크기를 맞추고(라벨, 아이콘) false는 부모 너비를 채우고 높이를 움직입니다.
align'start' | 'center' | 'end''center'크기가 바뀌는 동안 내용이 놓이는 위치.
effect'fade' | 'up' | 'down' | 'scale''fade'들어오고 나가는 방식. up은 올라오고, down은 내려오고, scale은 커집니다.
transitionTransitionspring시간 곡선 { duration, easing } 또는 스프링 { tempo: 'spring', spring }. 스프링은 끊겨도 속도를 이어갑니다.
onMotionComplete(value) => void움직임이 멈추면 실행됩니다.

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

웹과 React Native

inline(span으로 그릴 때 기본값)은 너비와 높이를, inline={false}는 부모 너비를 채우고 높이만 움직입니다.

React Native에서 inline 교체는 새 내용을 한 줄로 측정합니다. 줄바꿈되는 내용에는 inline={false}를 쓰세요.

이 컴포넌트를 쓰는 예제

검색

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