MotionHighlight
Tab, controlli segmentati o navigazione a partire dai dati, con un’unica evidenziazione che si sposta sulla selezione.
WebReact NativeSelezione e pagine
Provalo
Preparazione dell’esempio…
L’uso più breve
<MotionHighlight
items={['Overview', 'Activity', 'Settings']}
value={tab}
onValueChange={setTab}
hover
/>;Di che cosa si occupa al posto tuo
- Un’unica evidenziazione si sposta e si ridimensiona tra gli elementi; stilizzala con
highlightClassName. - Gli elementi vengono da
items, le key dagetKeye le etichette darenderItem. hoverle fa seguire il puntatore e tornare alla selezione.- Gli elementi possono andare a capo su più righe e l’evidenziazione li segue.
- Il caricamento dei font e i cambi di layout vengono rimisurati in automatico.
Usalo per
- Le tab di una pagina.
- Una barra di filtri.
- Un controllo segmentato in un modulo di impostazioni.
Props
| Prop | Tipo | Predefinito | Descrizione |
|---|---|---|---|
items | readonly T[] | —obbligatoria | Il tuo array di dati. |
value | key | null | —obbligatoria | Key dell’elemento evidenziato; null nasconde l’evidenziazione. |
onValueChange | (key, item) => void | Viene eseguito con la key e l’elemento quando un elemento viene premuto. | |
getKey | (item) => string | number | item.id | Restituisce una key unica e stabile per un elemento. Di default è item.id, oppure l’elemento stesso per stringhe e numeri. |
renderItem | (item, { selected, index }) => ReactNode | item.label | Disegna un elemento; riceve se è selezionato. |
hover | boolean | false | Segue il puntatore sugli elementi e torna a value quando esce (web). |
itemAs | element | 'button' | L’elemento per ogni voce. |
itemClassName | string | Classe per l’elemento di ogni voce; itemStyle imposta il suo stile inline. | |
highlightClassName | string | Classe per l’evidenziazione; highlightStyle imposta il suo stile inline. | |
transition | Transition | spring | Una curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte. |
Le altre props vanno all’elemento renderizzato, quindi className, style e gli event handler funzionano come sempre.
Web e React Native
Ogni elemento viene renderizzato come button di default (itemAs lo cambia); premerlo chiama onValueChange(key, item).
Su React Native gli elementi sono Pressable; la posizione gira sul driver nativo e la dimensione su una view annidata guidata da JavaScript.
Usato in questi esempi
- Posta in arrivoTab di filtro con conteggi dal vivo, righe da scartare con lo swipe e una lista che chiude il vuoto.
MotionHighlightMotionListMotionSwipeMotionNumber - Feed di fotoScorri tra le foto, salta con le miniature, apri qualsiasi foto a schermo intero e tira su i suoi dettagli.
MotionPagerMotionHighlightMotionZoomMotionSheet