PullToRefresh
Компонент для обновления контента жестом “потянуть вниз”. Работает на сенсорных устройствах и поддерживает управление состоянием загрузки.
Обязательные свойства
Обработчик onRefresh
Функция обновления данных (прим.: функция должна быть мемоизированным обработчиком)
Особенности работы
Управление состоянием
- Устанавливайте
isFetching={true}при начале загрузки. - Устанавливайте
isFetching={false}после завершения загрузки.
Доступность (a11y)
Жест «потянуть вниз» недоступен пользователям ассистивных технологий: в VoiceOver смахивание
тремя пальцами вниз не вызывает PullToRefresh.
Вместо жеста компонент отрисовывает скрытую кнопку «Обновить». Она в таб-фокусе, срабатывает
с клавиатуры (Enter/Space) и объявляется скринридером. Кнопка вызывает тот же onRefresh и
блокируется на время обновления. Состояние загрузки озвучивается через aria-busy и
aria-live="polite".
Чтобы зрячий пользователь, навигирующийся с клавиатуры, видел, где оказался, кнопка (на базе
Button) раскрывается во всплывающую при фокусе и скрывается при потере фокуса.
Тексты для скринридера переопределяются свойствами:
<PullToRefresh
onRefresh={onRefresh}
isFetching={fetching}
accessibilityLabel="Лента пользователей"
refreshLabel="Обновить ленту"
>
{content}
</PullToRefresh>accessibilityLabel— подпись области (по умолчанию «Обновление контента»).refreshLabel— текст кнопки (по умолчанию «Обновить»).
Свойства и методы
| Свойство | Описание |
|---|---|
accessibilityLabel | stringТекст, объявляемый скринридером для области обновления. По умолчанию: Обновление контента |
Component | ElementType<any, keyof IntrinsicElements>По умолчанию: - |
document | DocumentПо умолчанию: - |
getRootRef | Ref<HTMLElement>По умолчанию: - |
isFetching | booleanОпределяет, выполняется ли обновление. Для скрытия спиннера после получения контента необходимо передать По умолчанию: - |
noSlideClick | booleanБлокировать click-события после распознавания свайпа. По умолчанию: - |
onEnd | CustomTouchEventHandlerОбщий обработчик завершения взаимодействия. По умолчанию: - |
onEndX | CustomTouchEventHandlerОбработчик завершения горизонтального свайпа. По умолчанию: - |
onEndY | CustomTouchEventHandlerОбработчик завершения вертикального свайпа. По умолчанию: - |
onEnter | HoverHandlerОбработчик входа курсора в область. По умолчанию: - |
onLeave | HoverHandlerОбработчик выхода курсора из области. По умолчанию: - |
onMove | CustomTouchEventHandlerОбщий обработчик перемещения. По умолчанию: - |
onMoveX | CustomTouchEventHandlerОбработчик горизонтального перемещения. По умолчанию: - |
onMoveY | CustomTouchEventHandlerОбработчик вертикального перемещения. По умолчанию: - |
onRefresh | AnyFunctionБудет вызвана для обновления контента (прим.: функция должна быть мемоизированным обработчиком). По умолчанию: - |
onStart | CustomTouchEventHandlerОбщий обработчик начала взаимодействия. По умолчанию: - |
onStartX | CustomTouchEventHandlerОбработчик начала горизонтального перемещения. По умолчанию: - |
onStartY | CustomTouchEventHandlerОбработчик начала вертикального перемещения. По умолчанию: - |
refreshLabel | stringТекст скрытой кнопки, запускающей обновление для пользователей ассистивных технологий. По умолчанию: Обновить |
scroll | ScrollContextInterfaceПо умолчанию: - |
slideThreshold | numberПорог расстояния в пикселях для активации свайпа. По умолчанию: 5 |
slotProps | { controls?: Pick<CSSProperties, "zIndex">; } | undefinedСвойства, которые можно прокинуть внутрь компонента:
По умолчанию: - |
stopPropagation | booleanОстанавливать всплытие событий. По умолчанию: - |
useCapture | booleanИспользовать фазу capture для событий. По умолчанию: - |
usePointerHover | booleanИспользовать pointer-events для hover-состояний. Работает на отключенных элементах (disabled inputs). По умолчанию: - |
window | WindowПо умолчанию: - |