所有元件
MotionHighlight
由資料產生的分頁標籤、分段控制項或導覽,一個醒目標示會移到選取的項目。
WebReact Native選擇與翻頁
動手試試
最簡用法
Tabs.jsx<MotionHighlight
items={['Overview', 'Activity', 'Settings']}
value={tab}
onValueChange={setTab}
hover
/>;
它替你處理的事
- 一個醒目標示在各項目之間移動並改變尺寸;以
highlightClassName 設定樣式。 - 項目來自
items,key 來自 getKey,標籤來自 renderItem。 hover 會讓它跟隨指標,離開後回到選取的項目。- 項目可以換成多行,醒目標示也會跟著移動。
- 字型載入與版面變化會自動重新測量。
Props
| Prop | 型別 | 預設值 | 說明 |
|---|
items | readonly T[] | —必填 | 你的資料陣列。 |
|---|
value | key | null | —必填 | 醒目標示項目的 key;null 會隱藏醒目標示。 |
|---|
onValueChange | (key, item) => void | | 項目被按下時,帶著 key 與該項目執行。 |
|---|
getKey | (item) => string | number | item.id | 為項目回傳唯一且穩定的 key。預設為 item.id,字串與數字則為它本身。 |
|---|
renderItem | (item, { selected, index }) => ReactNode | item.label | 繪製一個項目;會收到它是否被選取。 |
|---|
hover | boolean | false | 在項目上跟隨指標,離開時回到 value(Web)。 |
|---|
itemAs | element | 'button' | 每個項目使用的元素。 |
|---|
itemClassName | string | | 每個項目元素的 class;itemStyle 設定其行內樣式。 |
|---|
highlightClassName | string | | 醒目標示的 class;highlightStyle 設定其行內樣式。 |
|---|
transition | Transition | spring | 時間曲線 { duration, easing } 或彈簧 { tempo: 'spring', spring }。彈簧被中斷時會保留動量。 |
|---|
其他 props 會傳給渲染的元素,所以 className、style 與事件處理函式照常可用。