MotionHighlight
Flikar, segmenterade kontroller eller navigation från data, med en markering som flyttar till urvalet.
WebbReact NativeUrval och sidor
Prova
Förbereder exemplet…
Kortaste användning
<MotionHighlight
items={['Overview', 'Activity', 'Settings']}
value={tab}
onValueChange={setTab}
hover
/>;Det här sköter den åt dig
- En markering flyttar och ändrar storlek mellan objekt; styla den med
highlightClassName. - Objekten kommer från
items, nycklarna frångetKeyoch etiketterna frånrenderItem. hoverfår den att följa pekaren och återvända till urvalet.- Objekten kan radbrytas på flera rader och markeringen följer dem.
- Inläsning av typsnitt och layoutändringar mäts om automatiskt.
Använd den för
- Sidflikar.
- Ett filterfält.
- En segmenterad kontroll i ett inställningsformulär.
Props
| Prop | Typ | Standard | Beskrivning |
|---|---|---|---|
items | readonly T[] | —krävs | Din dataarray. |
value | key | null | —krävs | Nyckeln för det markerade objektet; null döljer markeringen. |
onValueChange | (key, item) => void | Körs med nyckeln och objektet när ett objekt trycks. | |
getKey | (item) => string | number | item.id | Returnerar en unik, stabil nyckel för ett objekt. Standard är item.id, eller själva objektet för strängar och tal. |
renderItem | (item, { selected, index }) => ReactNode | item.label | Ritar ett objekt; får veta om det är valt. |
hover | boolean | false | Följ pekaren över objekt och återgå till value när den lämnar (webb). |
itemAs | element | 'button' | Elementet för varje objekt. |
itemClassName | string | Klass för varje objektelement; itemStyle sätter dess inline-style. | |
highlightClassName | string | Klass för markeringen; highlightStyle sätter dess inline-style. | |
transition | Transition | spring | En timingkurva { duration, easing } eller en fjäder { tempo: 'spring', spring }. Fjädrar behåller sitt momentum när de avbryts. |
Andra props går till det renderade elementet, så className, style och händelsehanterare fungerar som vanligt.
Webb och React Native
Varje objekt renderas som standard som button (itemAs ändrar det); ett tryck anropar onValueChange(key, item).
I React Native är objekten Pressable; positionen körs på native driver och storleken på en nästlad vy som styrs av JavaScript.