MotionHighlight
Вкладки, сегментовані перемикачі чи навігація з даних — з одним підсвічуванням, що переміщується до вибраного.
ВебReact NativeВибір і сторінки
Спробуйте
Підготовка прикладу…
Найкоротше використання
<MotionHighlight
items={['Overview', 'Activity', 'Settings']}
value={tab}
onValueChange={setTab}
hover
/>;Що він бере на себе
- Одне підсвічування рухається й змінює розмір між елементами; стилізуйте його через
highlightClassName. - Елементи беруться з
items, ключі — зgetKey, підписи — зrenderItem. hoverзмушує його йти за вказівником і повертатися до вибраного.- Елементи можуть переноситися на кілька рядків, і підсвічування йде за ними.
- Завантаження шрифтів і зміни розкладки перемірюються автоматично.
Для чого підходить
- Вкладки сторінки.
- Панель фільтрів.
- Сегментований перемикач у формі налаштувань.
Props
| Проп | Тип | Типово | Опис |
|---|---|---|---|
items | readonly T[] | —обов’язково | Ваш масив даних. |
value | key | null | —обов’язково | Ключ підсвіченого елемента; null ховає підсвічування. |
onValueChange | (key, item) => void | Виконується з ключем і елементом під час натискання на елемент. | |
getKey | (item) => string | number | item.id | Повертає унікальний стабільний ключ елемента. Типово — item.id, а для рядків і чисел — сам елемент. |
renderItem | (item, { selected, index }) => ReactNode | item.label | Малює елемент; отримує, чи він вибраний. |
hover | boolean | false | Іти за вказівником над елементами й повертатися до value, коли він іде (веб). |
itemAs | element | 'button' | Елемент для кожного пункту. |
itemClassName | string | Клас для елемента кожного пункту; itemStyle задає його вбудований стиль. | |
highlightClassName | string | Клас для підсвічування; highlightStyle задає його вбудований стиль. | |
transition | Transition | spring | Крива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію. |
Решта props передається відрендереному елементу, тож className, style і обробники подій працюють як завжди.
Веб і React Native
Кожен елемент типово рендериться як button (itemAs це змінює); натискання викликає onValueChange(key, item).
У React Native елементи — це Pressable; позиція працює на нативному драйвері, а розмір — на вкладеному view, яким керує JavaScript.
Використовується в прикладах
- ВхідніВкладки-фільтри з живими лічильниками, рядки, які можна змахнути, і список, що закриває проміжок.
MotionHighlightMotionListMotionSwipeMotionNumber - ФотострічкаГортайте фотографії, переходьте мініатюрами, відкривайте будь-яке фото на весь екран і витягуйте його подробиці.
MotionPagerMotionHighlightMotionZoomMotionSheet