Довідник API для React

Повний довідник @reelkit/react : компоненти, пропси та методи.

Пропси Reel

ReelProps

PropТипТипове значенняОпис
countnumberrequiredЗагальна кількість елементів
size[number, number]-Ширина й висота у вигляді [width, height]. Якщо не задано, вимірюється автоматично через ResizeObserver
itemBuilder(index, indexInRange, size) => ReactElementrequiredФункція, що рендерить кожен слайд
direction'vertical' | 'horizontal''vertical'Напрямок прокручування
initialIndexnumber0Початковий індекс
loopbooleanfalseВмикає нескінченний цикл
enableWheelbooleanfalseВмикає навігацію колесом миші
wheelDebounceMsnumber200Дебаунс події колеса в мілісекундах
enableNavKeysbooleantrueВмикає навігацію з клавіатури
onNavKeyPress(increment: -1 | 1) => void-Власний обробник навігації стрілками. Замінює стандартну поведінку prev/next.
transitionTransitionTransformFnslideTransitionФункція ефекту переходу. Вбудовані: slideTransition, fadeTransition, flipTransition, cubeTransition, zoomTransition
transitionDurationnumber300Тривалість анімації в мілісекундах
enableGesturesbooleantrueВмикає навігацію перетягуванням дотиком або мишею
swipeDistanceFactornumber0.12Поріг свайпу (0–1)
rangeExtractor(index: number, count: number) => number[]defaultRangeExtractorВласна функція, що визначає, які індекси рендеряться
keyExtractor(index: number) => string-Власна функція ключів для звіряння в React (корисно з циклом)
apiRefRefObject<ReelApi>-Ref для доступу до методів API
classNamestring-Клас CSS для елемента-контейнера
styleCSSProperties-Вбудовані стилі для елемента-контейнера
ariaLabelstring-Доступна назва області каруселі, яку читають екранні читачі

Колбеки

PropТипОпис
afterChange(index, indexInRange) => voidВикликається після завершення зміни слайда
beforeChange(index, nextIndex, indexInRange) => voidВикликається перед початком зміни слайда
onSlideDragStart(index) => voidВикликається на початку перетягування
onSlideDragEnd(index) => voidВикликається після завершення перетягування
onSlideDragCanceled(index) => voidВикликається, коли перетягування скасовано

Методи ReelApi

Доступ до методів слайдера через apiRef:

typescript
МетодТипОпис
next()() => voidПерейти до наступного слайда
prev()() => voidПерейти до попереднього слайда
goTo(index, animate?)(number, boolean?) => PromiseПерейти до конкретного слайда
adjust()() => voidПерерахувати позиції слайдів
observe()() => voidПочинає стежити за клавіатурою
unobserve()() => voidПрипиняє стежити за клавіатурою

Пропси ReelIndicator

ReelIndicatorProps

PropТипТипове значенняОпис
countnumberautoЗагальна кількість елементів. Береться від батьківського Reel, якщо компонент вкладений у нього; передавайте явно за окремого використання
activenumberautoПоточний активний індекс. Береться від батьківського Reel, якщо компонент вкладений у нього; передавайте явно за окремого використання
direction'vertical' | 'horizontal''vertical'Орієнтація індикатора
radiusnumber3Розмір точки в пікселях
visiblenumber5Максимум видимих точок звичайного розміру
gapnumber4Відстань між точками в пікселях
activeColorstring'#fff'Колір активної точки
inactiveColorstring'rgba(255,255,255,0.5)'Колір неактивної точки
edgeScalenumber0.5Масштаб крайніх точок за межами видимого
onDotClick(index: number) => void-Колбек на клік по точці
classNamestring-Власний клас CSS
styleCSSProperties-Власні вбудовані стилі

Компоненти-спостерігачі

Observe

Містить між сигналами ядра й рендерингом React без зайвих рендерів батька. Коли підписані сигнали змінюються, виконується заново лише функція children.

tsx
PropТипТипове значенняОпис
signalsSubscribable[]requiredСигнали для підписки. Сповіщення від будь-якого з них перезапускає функцію children — і лише її, ніколи батьківський компонент.
children() => ReactElement | nullrequiredФункція рендерингу, що виконується заново на кожну зміну. Читайте значення сигналів усередині неї; прочитане ззовні захоплюється один раз і застаріває.

AnimatedObserve

Підписується на сигнали анімованих значень і плавно інтерполює через requestAnimationFrame.

tsx
PropТипТипове значенняОпис
signalSignal<AnimatedValue>requiredСигнал, що видає { value, duration, done? }. Тривалість більша за 0 інтерполює від поточного значення до нового; 0 переходить одразу.
children(value: number) => ReactElementrequiredФункція рендерингу отримує інтерпольоване значення для поточного кадру, застосоване синхронно, щоб DOM встигав за анімацією.

Hooks

useBodyLock

Блокує прокручування body й компенсує зсув на ширину смуги прокручування.

typescript

useOverlayUrlState

OverlayUrlStateOptions

Будує контролер стану в URL для оверлея, який ви передаєте в *UrlOverlay як його controller prop.

See Стан в URL у посібнику для React — там покроковий розбір і приклади.

OptionТипТипове значенняОпис
paramstringrequiredПараметр запиту, що несе активний слайд, наприклад "photo".
adapterUrlAdapterHistory APIСистема навігації, через яку читати й писати. У застосунку з роутером передайте адаптер на його базі, щоб власне місцеположення роутера не застаріло.
codec{ decode(raw) => Id | null; encode(id) => string }requiredФормат передавання: текст параметра ↔ стабільна ідентичність, незалежно від колекції. Іде разом із локатором як узгоджена пара з однаковим Id — розгорніть ...urlIndexKey(() => images.length) для типової галереї з ?photo=3 або передайте власний (base64, slug), щоб закладка пережила зміну порядку галереї.
locator{ locate(id) => number | null; locateAsync?(id) => Promise<number | null>; identify(index) => id }requiredЗіставляє ідентичність із позицією і сам відповідає за свою чинність: locate (синхронно), locateAsync (запасний варіант для посторінкової галереї), identify (для запису). Для звичайної галереї за індексом розгорніть ...urlIndexKey(() => images.length) — він дає цей локатор разом із відповідним кодеком і обмежує ?photo=3 живою кількістю, тож застарілий ?photo=99 сам зникає з URL замість того, щоб відкрити слайд, якого ніхто не називав. Посторінкова стрічка або галерея з адресацією за ідентичністю передає власну узгоджену пару кодек + локатор.

useReactRouterUrlAdapter

A UrlAdapter на базі React Router. Передайте його як опцію adapter у useOverlayUrlState у застосунку з роутером, щоб роутер лишався єдиним джерелом правди про навігацію: запис history.pushState повз роутер лишає його місцеположення застарілим, і наступна навігація втрачає параметр.

Постачається з окремого підшляху, тож застосунок без роутера ніколи не тягне react-router-dom у свій бандл. react-router-dom — необов’язкова peer-залежність.

tsx

Accessibility

<Reel> рендериться як role="region" з aria-roledescription="carousel". Задайте пропс ariaLabel , щоб дати області назву для екранного читача. Ввічлива жива область оголошує «Слайд N з M» на кожну зміну слайда, не перерендерюючи карусель. Неактивні слайди отримують атрибут inert , тож фокус і навігація допоміжних технологій їх пропускають.

<ReelIndicator> рендериться як role="tablist" з рухомим tabindex на точках; стрілки переміщують фокус, а Enter або Space активує слайд.

Будуєте власне модальне вікно навколо <Reel>? captureFocusForReturn, createFocusTrap, та getFocusableElements — вони реекспортовані з @reelkit/react для повернення й утримання фокуса.

Utilities

createDefaultKeyExtractorForLoop

Створює екстрактор ключів, який дає раду однаковим індексам, коли loop увімкнено.

tsx