すべてのコンポーネント
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 | | 各項目の要素のクラス。インラインスタイルは itemStyle で指定します。 |
|---|
highlightClassName | string | | ハイライトのクラス。インラインスタイルは highlightStyle で指定します。 |
|---|
transition | Transition | spring | タイミングカーブ { duration, easing } かスプリング { tempo: 'spring', spring }。スプリングは中断されても勢いを保ちます。 |
|---|
ほかの props は描画される要素に渡るので、className、style、イベントハンドラーはいつもどおり使えます。