MotionHighlight
File, controale segmentate sau navigare din date, cu un singur evidențiator care se mută la selecție.
WebReact NativeSelecție și paginare
Încercați
Se pregătește exemplul…
Cea mai scurtă utilizare
<MotionHighlight
items={['Overview', 'Activity', 'Settings']}
value={tab}
onValueChange={setTab}
hover
/>;Ce rezolvă în locul dumneavoastră
- Un singur evidențiator se mută și se redimensionează între elemente; stilizați-l cu
highlightClassName. - Elementele vin din
items, key-urile dingetKey, iar etichetele dinrenderItem. hoverîl face să urmeze cursorul și să revină la selecție.- Elementele se pot încadra pe mai multe rânduri, iar evidențiatorul le urmează.
- Încărcarea fonturilor și schimbările de layout sunt măsurate din nou automat.
Folosiți-o pentru
- File de pagină.
- O bară de filtre.
- Un control segmentat într-un formular de setări.
Props
| Prop | Tip | Implicit | Descriere |
|---|---|---|---|
items | readonly T[] | —obligatoriu | Tabloul cu datele dumneavoastră. |
value | key | null | —obligatoriu | Key-ul elementului evidențiat; null ascunde evidențiatorul. |
onValueChange | (key, item) => void | Rulează cu key-ul și elementul când un element este apăsat. | |
getKey | (item) => string | number | item.id | Returnează un key unic și stabil pentru un element. Implicit item.id sau elementul însuși pentru șiruri și numere. |
renderItem | (item, { selected, index }) => ReactNode | item.label | Desenează un element; primește dacă este selectat. |
hover | boolean | false | Urmează cursorul peste elemente și revine la value la ieșire (web). |
itemAs | element | 'button' | Elementul pentru fiecare element din listă. |
itemClassName | string | Clasă pentru fiecare element din listă; itemStyle îi setează stilul inline. | |
highlightClassName | string | Clasă pentru evidențiator; highlightStyle îi setează stilul inline. | |
transition | Transition | spring | O curbă timing { duration, easing } sau un arc { tempo: 'spring', spring }. Arcurile își păstrează impulsul când sunt întrerupte. |
Celelalte props merg la elementul randat, așa că className, style și handlerele de evenimente funcționează ca de obicei.
Web și React Native
Fiecare element se randează implicit ca button (itemAs schimbă asta); apăsarea lui apelează onValueChange(key, item).
În React Native elementele sunt Pressable; poziția rulează pe driverul nativ, iar mărimea pe o vizualizare imbricată condusă de JavaScript.
Folosită în aceste exemple
- InboxFile de filtrare cu contoare live, rânduri care pot fi glisate deoparte și o listă care închide golul.
MotionHighlightMotionListMotionSwipeMotionNumber - Flux de fotografiiGlisați printre fotografii, săriți cu miniaturi, deschideți orice fotografie pe tot ecranul și trageți în sus detaliile.
MotionPagerMotionHighlightMotionZoomMotionSheet