MotionHighlight
Tabs, segmented controls of navigatie uit data, met één markering die naar de selectie verhuist.
WebReact NativeSelectie en pagina's
Probeer het
Voorbeeld voorbereiden…
Kortste gebruik
<MotionHighlight
items={['Overview', 'Activity', 'Settings']}
value={tab}
onValueChange={setTab}
hover
/>;Wat het voor je regelt
- Eén markering beweegt en verandert van grootte tussen items; geef haar stijl met
highlightClassName. - Items komen uit
items, keys uitgetKeyen labels uitrenderItem. hoverlaat haar de aanwijzer volgen en terugkeren naar de selectie.- Items kunnen over meerdere rijen doorlopen en de markering volgt ze.
- Het laden van lettertypen en layoutwijzigingen worden automatisch opnieuw gemeten.
Gebruik het voor
- Paginatabs.
- Een filterbalk.
- Een segmented control in een instellingenformulier.
Props
| Prop | Type | Standaard | Beschrijving |
|---|---|---|---|
items | readonly T[] | —verplicht | Je data-array. |
value | key | null | —verplicht | Key van het gemarkeerde item; null verbergt de markering. |
onValueChange | (key, item) => void | Draait met de key en het item als een item wordt ingedrukt. | |
getKey | (item) => string | number | item.id | Geeft een unieke, stabiele key voor een item terug. Standaard item.id, of het item zelf bij strings en getallen. |
renderItem | (item, { selected, index }) => ReactNode | item.label | Tekent een item; krijgt mee of het geselecteerd is. |
hover | boolean | false | Volg de aanwijzer over items en keer bij verlaten terug naar value (web). |
itemAs | element | 'button' | Het element voor elk item. |
itemClassName | string | Class voor elk item-element; itemStyle zet de inline style. | |
highlightClassName | string | Class voor de markering; highlightStyle zet de inline style. | |
transition | Transition | spring | Een timingcurve { duration, easing } of een veer { tempo: 'spring', spring }. Veren behouden hun momentum als ze worden onderbroken. |
Andere props gaan naar het gerenderde element, dus className, style en event handlers werken zoals gewoonlijk.
Web en React Native
Elk item rendert standaard als button (itemAs verandert dat); erop drukken roept onValueChange(key, item) aan.
In React Native zijn items Pressable's; de positie loopt op de native driver en de grootte op een geneste view die door JavaScript wordt aangestuurd.