所有元件

MotionHighlight

由資料產生的分頁標籤、分段控制項或導覽,一個醒目標示會移到選取的項目。

WebReact Native選擇與翻頁

動手試試

正在準備範例…

最簡用法

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

它替你處理的事

  • 一個醒目標示在各項目之間移動並改變尺寸;以 highlightClassName 設定樣式。
  • 項目來自 items,key 來自 getKey,標籤來自 renderItem。
  • hover 會讓它跟隨指標,離開後回到選取的項目。
  • 項目可以換成多行,醒目標示也會跟著移動。
  • 字型載入與版面變化會自動重新測量。

適用情境

  • 頁面分頁標籤。
  • 篩選列。
  • 設定表單中的分段控制項。

Props

Prop型別預設值說明
itemsreadonly T[]—必填你的資料陣列。
valuekey | null—必填醒目標示項目的 key;null 會隱藏醒目標示。
onValueChange(key, item) => void項目被按下時,帶著 key 與該項目執行。
getKey(item) => string | numberitem.id為項目回傳唯一且穩定的 key。預設為 item.id,字串與數字則為它本身。
renderItem(item, { selected, index }) => ReactNodeitem.label繪製一個項目;會收到它是否被選取。
hoverbooleanfalse在項目上跟隨指標,離開時回到 value(Web)。
itemAselement'button'每個項目使用的元素。
itemClassNamestring每個項目元素的 class;itemStyle 設定其行內樣式。
highlightClassNamestring醒目標示的 class;highlightStyle 設定其行內樣式。
transitionTransitionspring時間曲線 { duration, easing } 或彈簧 { tempo: 'spring', spring }。彈簧被中斷時會保留動量。

其他 props 會傳給渲染的元素,所以 className、style 與事件處理函式照常可用。

Web 與 React Native

每個項目預設渲染為 button(以 itemAs 修改),按下時呼叫 onValueChange(key, item)。

在 React Native 上項目是 Pressable;位置由原生驅動,尺寸由一個以 JavaScript 驅動的巢狀檢視控制。

用到它的範例

搜尋

輸入關鍵字搜尋文件。