Pressable¶
Pressable - это обертка компонента Core Component, которая может обнаруживать различные стадии взаимодействия с нажатием на любой из своих определенных дочерних компонентов.
1 2 3 | |
Как это работает¶
На элементе, обернутом Pressable:
onPressInвызывается, когда активируется жест нажатия.onPressOutвызывается при деактивации жеста нажатия.
После нажатия onPressIn произойдет одно из двух событий:
- Человек убирает палец, вызывая
onPressOut, за которым следуетonPress. - Если человек оставляет палец дольше, чем на 500 миллисекунд, то срабатывает
onLongPress. (onPressOutвсе равно сработает, когда человек уберет палец).
Пальцы — не самые точные инструменты, и часто пользователи могут случайно активировать не тот элемент или пропустить область активации. Чтобы помочь, Pressable имеет дополнительный параметр HitRect, который можно использовать для определения расстояния, на котором прикосновение может быть зарегистрировано от обернутого элемента. Нажатия могут начинаться в любом месте в пределах HitRect.
PressRect позволяет нажатиям выходить за пределы элемента и его HitRect, сохраняя активацию и право на "нажатие" — представьте, что вы медленно отводите палец от кнопки, на которую нажимаете.
Область касания никогда не выходит за границы родительского представления, а Z-индекс родственных представлений всегда имеет приоритет, если касание попадает на два пересекающихся представления.
Pressable использует API Pressability от React Native. Для получения дополнительной информации о том, как работает машина состояний Pressability, ознакомьтесь с реализацией для Pressability.
Пример¶
Пропсы¶
android_disableSound ¶
Если значение true, то при нажатии не воспроизводится системный звук Android.
| Type | Default |
|---|---|
| boolean | false |
android_ripple ¶
Включает эффект пульсации Android и настраивает его свойства.
| Type |
|---|
| RippleConfig |
children¶
Либо дочерние элементы, либо функция, получающая логическое значение, отражающее, нажат ли компонент в данный момент.
| Type |
|---|
| React Node |
unstable_pressDelay¶
Длительность (в миллисекундах) ожидания после нажатия кнопки вниз перед вызовом onPressIn.
| Type |
|---|
| number |
delayLongPress¶
Длительность (в миллисекундах) с момента onPressIn до вызова onLongPress.
| Type | Default |
|---|---|
| number | 500 |
disabled¶
Отключено ли поведение нажатия.
| Тип | По умолчанию |
|---|---|
| boolean | false |
hitSlop¶
Устанавливает дополнительное расстояние за пределами элемента, на котором может быть обнаружено нажатие.
| Type |
|---|
| Rect или число |
onHoverIn¶
Вызывается при активации hover для обеспечения визуальной обратной связи.
| Type |
|---|
| ({ nativeEvent: MouseEvent }) => void |
onHoverOut¶
Вызывается при отключении наведения для отмены визуальной обратной связи.
| Type |
|---|
| ( { nativeEvent: MouseEvent }) => void |
onLongPress¶
Вызывается, если время после onPressIn длится более 500 миллисекунд. Этот период времени может быть настроен с помощью параметра delayLongPress.
| Type |
|---|
| ({nativeEvent: PressEvent}) => void |
onPress¶
Вызывается после onPressOut.
| Type |
|---|
| ({nativeEvent: PressEvent}) => void |
onPressIn¶
Вызывается непосредственно при нажатии, перед onPressOut и onPress.
| Type |
|---|
| ({nativeEvent: PressEvent}) => void |
onPressOut¶
Вызывается, когда нажатие отпускается.
| Type |
|---|
| ({nativeEvent: PressEvent}) => void |
pressRetentionOffset¶
Дополнительное расстояние за пределами данного представления, на котором касание считается нажатием до срабатывания функции onPressOut.
| Type | Default |
|---|---|
| Rect или число | {bottom: 30, left: 20, right: 20, top: 20} |
style¶
Либо стили представления, либо функция, которая получает логическое значение, отражающее, нажат ли компонент в данный момент, и возвращает стили представления.
| Type |
|---|
| View Style |
testOnly_pressed¶
Используется только для документации или тестирования (например, тестирования моментальных снимков).
| Type | Default |
|---|---|
| boolean | false |
Определения типа¶
RippleConfig¶
Конфигурация Ripple-эффекта для свойства android_ripple.
| Type |
|---|
| object |
Свойства:
| Name | Type | Required | Description |
|---|---|---|---|
| color | color | No | Определяет цвет эффекта пульсации. |
| borderless | boolean | No | Определяет, должен ли эффект пульсации не включать границы. |
| radius | number | No | Определяет радиус эффекта пульсации. |
| foreground | boolean | No | Установите значение true, чтобы добавить эффект пульсации на передний план представления, а не на фон. Это полезно, если одно из дочерних представлений имеет собственный фон или, например, отображает изображения, и вы не хотите, чтобы рябь была закрыта ими. |