Перейти к содержимому
v2.5.0
English
Русский
Документация

IndexedSnapScroller

IndexedSnapScroller — составной компонент на основе SnapScroller для виртуализированного постраничного пролистывания по окну индексов.

Пропсы корня

ПропТипПо умолчанию
startnumber-2
Начальный индекс для генерации исходной последовательности страниц. Служит логической точкой отсчёта для скользящего окна индексов.
startDir-1 | 11
Направление, в котором растёт начальная последовательность индексов. 1 — индексы растут вправо (0, 1, 2…); -1 — индексы убывают вправо (0, -1, -2…). Управляет порядком роста начального массива индексов.
sizenumber5
Количество сегментов индексов, отрендеренных одновременно. Определяет размер виртуального «окна», по которому скроллер сдвигается при навигации влево или вправо.
shiftnumber2
Количество страниц, добавляемых, когда прокрутка доходит до конца окна, чтобы быстрый свайп продолжался. Когда прокрутка останавливается, окно заново центрируется на странице привязки.
indexnumber—
Управляет текущим активным логическим индексом. Если задан, скроллер держит этот индекс в области видимости: прокручивает к нему, если это возможно, или при необходимости перестраивает окно.
preserveScrollbooleantrue
Сохраняет текущий привязанный элемент после изменения содержимого (например, когда страницы добавляются в начало или конец). Если true, скроллер восстановит тот же индекс привязки через мгновенный scrollIntoView.
apiRefRef<IndexedSnapScrollerApiRef>—
Предоставляет императивный API скроллера. Позволяет управлять им программно, например прокручивать к индексу или сбрасывать виртуальное окно.
onOffset(value: number) => void—
Вызывается, когда окно растёт у края. -1 — прокрутка остановилась на первой странице (левый/верхний край); +1 — прокрутка дошла до конца (правый/нижний край). Полезно для бесконечной подгрузки: добавляйте страницы в конец или в начало в зависимости от направления.
refRef<HTMLDivElement>—
Ref на элемент скроллера.
defaultIndexnumber—
Начальный индекс элемента, к которому выполняется привязка при монтировании.
onScrollSnapChange(element: HTMLElement, index: number) => void—
Вызывается, когда операция прокрутки с привязкой полностью завершена и скроллер остановился на новом индексе привязки. Колбэк вызывается после завершения всех анимаций прокрутки и привязки, когда активная позиция привязки считается стабильной.
onScrollSnapChanging(element: HTMLElement, index: number) => void—
Вызывается, пока операция прокрутки с привязкой идёт и активный индекс привязки ещё меняется. Колбэк может вызываться несколько раз за одну прокрутку или свайп, пока скроллер приближается к конечной позиции привязки. Полезен для оптимистичных обновлений интерфейса, превью или синхронизации промежуточного состояния во время прокрутки.

Также принимает все атрибуты <div>.

Дочерние части

  • IndexedSnapScrollerContent: шаблон содержимого, привязанный к текущему виртуальному индексу.

IndexedSnapScrollerContent

ПропТипПо умолчанию
refRef<HTMLDivElement>—
Внешний ref на корневой элемент элемента. Объединяется с внутренним itemRef(index), чтобы участвовать в логике привязки.
asChildboolean—
Рендерит содержимое как дочерний элемент (через Slot) вместо нативного <div>. Атрибуты и ref остаются привязанными к переданному дочернему элементу.

Также принимает все атрибуты <div>.

Типы

  • IndexedSnapScrollerProps
  • IndexedSnapScrollerContentProps
  • IndexedSnapScrollerApiRef

Модель состояния

  • Корень управляет скользящим окном логических индексов.
  • Контролируемый index может либо прокрутить к существующему элементу, либо вызвать сброс окна.
  • Пока прокрутка доходит до конца, страницы добавляются, чтобы она могла продолжаться; когда прокрутка останавливается, окно заново центрируется на привязанной странице.
  • next() / prev() отсчитывают от страницы, к которой уже движется прокрутка, и сначала расширяют окно, если цель за его пределами.