모든 컴포넌트

MotionHighlight

데이터로 만드는 탭·세그먼트·내비게이션. 하이라이트 하나가 선택으로 이동합니다.

웹React Native선택과 넘기기

직접 해 보기

예제를 준비하는 중…

가장 짧은 사용법

Tabs.jsx
<MotionHighlight
  items={['Overview', 'Activity', 'Settings']}
  value={tab}
  onValueChange={setTab}
  hover
/>;

대신 처리하는 일

  • 하이라이트 하나가 항목 사이를 이동하며 크기를 바꿉니다. 모양은 highlightClassName으로 정합니다.
  • 항목은 items, 키는 getKey, 라벨은 renderItem에서 옵니다.
  • hover를 켜면 포인터를 따라가다가 선택으로 돌아옵니다.
  • 항목이 여러 줄로 줄바꿈되어도 하이라이트가 따라갑니다.
  • 글꼴 로딩과 레이아웃 변화는 자동으로 다시 측정합니다.

이럴 때 쓰세요

  • 페이지 탭.
  • 필터 막대.
  • 설정 폼의 세그먼트 컨트롤.

Props

Prop타입기본값설명
itemsreadonly T[]—필수내 데이터 배열.
valuekey | null—필수하이라이트할 항목의 키. null이면 하이라이트를 숨깁니다.
onValueChange(key, item) => void항목을 누르면 키와 항목으로 실행됩니다.
getKey(item) => string | numberitem.id항목의 고유하고 안정적인 키를 돌려줍니다. 기본값은 item.id, 문자열과 숫자는 그 값 자체입니다.
renderItem(item, { selected, index }) => ReactNodeitem.label항목을 그립니다. 선택 여부를 받습니다.
hoverbooleanfalse항목 위의 포인터를 따라가다 벗어나면 value로 돌아옵니다(웹).
itemAselement'button'각 항목의 요소.
itemClassNamestring각 항목 요소의 클래스. 인라인 스타일은 itemStyle.
highlightClassNamestring하이라이트의 클래스. 인라인 스타일은 highlightStyle.
transitionTransitionspring시간 곡선 { duration, easing } 또는 스프링 { tempo: 'spring', spring }. 스프링은 끊겨도 속도를 이어갑니다.

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

웹과 React Native

각 항목은 기본으로 button이며(itemAs로 바꿈), 누르면 onValueChange(key, item)이 실행됩니다.

React Native에서 항목은 Pressable이고, 위치는 네이티브 드라이버로, 크기는 JavaScript가 움직이는 안쪽 뷰로 처리합니다.

이 컴포넌트를 쓰는 예제

검색

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