Spec-Zone.ru › React Native

Pressable

Pressable — это обёртка для базового компонента, которая может определять различные стадии нажатия на любом из своих дочерних элементов.

<Pressable onPress={onPressFunction}>
  <Text>I'm pressable!</Text>
</Pressable>

Как это работает

На элементе, обернутом в Pressable:

  • onPressIn вызывается при активации нажатия.
  • onPressOut вызывается при деактивации жеста нажатия.

После нажатия onPressIn произойдёт одно из двух:

  1. Человек уберёт палец, что вызовет onPressOut, за которым последует onPress.
  2. Если человек удерживает палец дольше 500 миллисекунд перед его удалением, срабатывает onLongPress. (onPressOut всё равно сработает, когда он уберёт палец.)
Схема событий onPress в последовательности.

Палец — не самый точный инструмент, и пользователи часто случайно активируют не тот элемент или пропускают область активации. Для помощи, у Pressable есть необязательная HitRect, которую вы можете использовать, чтобы определить, насколько далеко прикосновение может регистрироваться от обернутого элемента. Нажатия могут начинаться в любой точке в пределах HitRect.

PressRect позволяет нажатиям перемещаться за пределы элемента и его HitRect, сохраняя при этом активацию и подпадая под «нажатие» — представьте, как вы медленно скользите пальцем от кнопки, на которую вы нажали.

Область касания никогда не выходит за пределы области родительского элемента, а индекс Z элементов-потомков всегда имеет приоритет, если касание происходит к двум перекрывающимся элементам.

Диаграмма HitRect и PressRect и принцип их работы.
Вы можете установить HitRect с hitSlop и установить PressRect с pressRetentionOffset.

Pressable использует API Pressability React Native. Для получения дополнительной информации о работе механизма состояния Pressability, ознакомьтесь с реализацией Pressability.

Свойства

android_disableSound
Android

Если true, то при нажатии не воспроизводится системный звук Android.

Тип Значение по умолчанию
boolean false

android_ripple
Android

Включает эффект ripple Android и настраивает его свойства.

Тип
RippleConfig

children

Дочерние элементы или функция, принимающая булево значение, отражающее, нажата ли кнопка в данный момент.

Тип
Узел React

unstable_pressDelay

Время ожидания (в миллисекундах) после нажатия перед вызовом onPressIn.

Тип
число

delayLongPress

Время (в миллисекундах) от onPressIn до вызова onLongPress.

Тип Значение по умолчанию
число 500

disabled

Отключено ли поведение нажатия.

Тип Значение по умолчанию
boolean false

hitSlop

Устанавливает дополнительное расстояние за пределами элемента, в котором можно обнаружить нажатие.

Тип
Прямоугольник или число

onLongPress

Вызывается, если время после onPressIn длится дольше 500 миллисекунд. Этот период можно настроить с помощью delayLongPress.

Тип
({ nativeEvent: PressEvent }) => void

onPress

Вызывается после onPressOut.

Тип
({ nativeEvent: PressEvent }) => void

onPressIn

Вызывается сразу при задействовании касания, до onPressOut и onPress.

Тип
({ nativeEvent: PressEvent }) => void

onPressOut

Вызывается при отпускании касания.

Тип
({ nativeEvent: PressEvent }) => void

pressRetentionOffset

Дополнительное расстояние за пределами этого элемента, в котором касание считается нажатием до вызова onPressOut.

Тип Значение по умолчанию
Прямоугольник или число { bottom: 30, left: 20, right: 20, top: 20 }

style

Стили элемента или функция, принимающая булево значение, отражающее, нажата ли кнопка в данный момент, и возвращающая стили элемента.

Тип
Стиль элемента

testOnly_pressed

Используется только для документации или тестирования (например, тестирование снимков).

Тип Значение по умолчанию
boolean false

Определения типов

RippleConfig

Конфигурация эффекта ripple для свойства android_ripple.

Тип
объект

Свойства:

Имя Тип Обязательно Описание
цвет цвет Нет Определяет цвет эффекта ripple.
borderless boolean Нет Определяет, не должен ли эффект ripple включать границу.
радиус число Нет Определяет радиус эффекта ripple.
foreground boolean Нет Установите в true, чтобы добавить эффект ripple на передний план элемента, а не на задний. Это полезно, если у одного из дочерних элементов есть собственный фон, или вы, например, отображаете изображения, и вы не хотите, чтобы эффект ripple был закрыт ими.

© 2022 Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License.
https://reactnative.dev/docs/pressable

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API