Перейти к содержанию

View

Самый фундаментальный компонент для создания пользовательского интерфейса, View — это контейнер, который поддерживает компоновку с помощью элементов управления flexbox, style, some touch handling и accessibility. View отображает непосредственно эквивалент нативного представления на любой платформе, на которой работает React Native, будь то UIView, div, android.view и т. д.

Представление View предназначено для вложения в другие представления и может иметь от 0 до многих дочерних элементов любого типа.

Этот пример создает View, который оборачивает два поля с цветом и текстовый компонент в строку с подложкой.

View разработаны для использования с StyleSheet для ясности и производительности, хотя встроенные стили также поддерживаются.

Синтетические сенсорные события

Для пропсов ответчика View (например, onResponderMove), передаваемые им синтетические события касания имеют форму PressEvent.

Свойства

accessibilityActions

Действия доступности позволяют ассистивной технологии программно вызывать действия компонента. Свойство accessibilityActions должно содержать список объектов действий. Каждый объект действия должен содержать имя поля и метку.

Дополнительную информацию см. в Руководстве по доступности.

Тип
array

accessibilityElementsHidden

Значение, указывающее, являются ли элементы доступности, содержащиеся в этом элементе доступности, скрытыми. По умолчанию false.

Дополнительную информацию см. в Руководстве по доступности.

Тип
bool

accessibilityHint

Подсказка доступности помогает пользователям понять, что произойдет, когда они выполнят действие над элементом доступности, если результат не ясен из метки доступности.

Тип
string

accessibilityLanguage

Значение, указывающее, какой язык должен использоваться программой чтения с экрана при взаимодействии пользователя с элементом. Оно должно соответствовать спецификации BCP 47.

Дополнительную информацию см. в iOS accessibilityLanguage doc.

Тип
string

accessibilityIgnoresInvertColors

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

Дополнительную информацию см. в Руководстве по доступности.

Тип
bool

accessibilityLabel

Переопределяет текст, который считывается программой чтения с экрана, когда пользователь взаимодействует с элементом. По умолчанию метка строится путем обхода всех дочерних элементов и накопления всех узлов Text, разделенных пробелом.

Тип
string

accessibilityLiveRegion

Указывает службам доступности, следует ли уведомлять пользователя об изменении данного представления. Работает только для Android API >= 19. Возможные значения:

  • none — Службы доступности не должны объявлять об изменениях в этом представлении.
  • polite — Службы доступности должны объявлять об изменениях в этом представлении.
  • assertive — Службы обеспечения доступности должны прерывать текущую речь, чтобы немедленно объявить об изменениях в этом представлении.

Для справки смотрите Android View docs.

Тип
enum('none', 'polite', 'assertive')

accessibilityRole

accessibilityRole передает назначение компонента пользователю вспомогательной технологии.

accessibilityRole может быть одним из следующих:

  • none — Используется, когда элемент не имеет роли.
  • button — Используется, когда элемент должен рассматриваться как кнопка.
  • link — Используется, когда элемент должен рассматриваться как ссылка.
  • search — Используется, когда элемент текстового поля должен также рассматриваться как поле поиска.
  • image — Используется, когда элемент должен рассматриваться как изображение. Может сочетаться, например, с кнопкой или ссылкой.
  • keyboardkey — Используется, когда элемент действует как клавиша клавиатуры.
  • text — Используется, когда элемент должен рассматриваться как статичный текст, который не может изменяться.
  • adjustable — Используется, когда элемент может быть "отрегулирован" (например, ползунок).
  • imagebutton — Используется, когда элемент должен рассматриваться как кнопка, а также является изображением.
  • header — Используется, когда элемент действует как заголовок для раздела содержимого (например, заголовок навигационной панели).
  • summary — Используется, когда элемент может быть использован для предоставления краткой информации о текущих условиях в приложении при первом запуске.
  • alert — Используется, когда элемент содержит важный текст, который должен быть представлен пользователю.
  • checkbox — Используется, когда элемент представляет флажок, который может быть отмечен, снят или иметь смешанное состояние.
  • combobox — Используется, когда элемент представляет собой комбинированное окно, которое позволяет пользователю выбирать из нескольких вариантов.
  • menu — Используется, когда компонент представляет собой меню выбора.
  • menubar — Используется, когда компонент представляет собой контейнер нескольких меню.
  • menuitem — Используется для представления пункта в меню.
  • progressbar — Используется для представления компонента, который показывает прогресс выполнения задачи.
  • radio — Используется для представления радиокнопки.
  • radiogroup — Используется для представления группы радиокнопок.
  • scrollbar — Используется для представления полосы прокрутки.
  • spinbutton — Используется для представления кнопки, открывающей список вариантов.
  • switch — Используется для представления переключателя, который можно включать и выключать.
  • tab — Используется для представления вкладки.
  • tablist — Используется для представления списка вкладок.
  • timer — Используется для представления таймера.
  • toolbar — Используется для представления панели инструментов (контейнер кнопок действий или компонентов).
  • grid — Используется с ScrollView, VirtualizedList, FlatList или SectionList для представления сетки. Добавляет объявления о входе/выходе из сетки в android GridView.
Тип
string

accessibilityState

Описывает текущее состояние компонента для пользователя вспомогательной технологии.

Дополнительную информацию см. в Руководстве по доступности.

Тип
object:

accessibilityValue

Представляет текущее значение компонента. Это может быть текстовое описание значения компонента, а для компонентов, основанных на диапазоне, таких как ползунки и индикаторы выполнения, оно содержит информацию о диапазоне (минимальное, текущее и максимальное).

Дополнительную информацию см. в Руководстве по доступности.

Тип
object: {min: number, max: number, now: number, text: string}

accessibilityViewIsModal

Значение, указывающее, должен ли VoiceOver игнорировать элементы в представлениях, которые являются родными братьями и сестрами приемника. По умолчанию false.

Дополнительную информацию см. в Руководстве по доступности.

Тип
bool

accessible

Когда true, указывает, что представление является элементом доступности. По умолчанию все осязаемые элементы являются доступными.

aria-busy

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

Тип По-умолчанию
boolean false

aria-checked

Указывает состояние элемента с флажком. Это поле может принимать либо булево значение, либо строку "mixed" для представления смешанных флажков.

Тип По-умолчанию
boolean, 'mixed' false

aria-disabled

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

Тип По-умолчанию
boolean false

aria-expanded

Указывает, является ли расширяемый элемент в данный момент развернутым или свернутым.

Тип По-умолчанию
boolean false

aria-hidden

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

Например, в окне, содержащем родственные представления A и B, установка aria-hidden в true для представления B заставляет VoiceOver игнорировать элементы в представлении B.

Тип По-умолчанию
boolean false

aria-label

Определяет строковое значение, которое маркирует интерактивный элемент.

Тип
string

aria-labelledby

Определяет элемент, который маркирует элемент, к которому он применяется. Значение aria-labelledby должно соответствовать nativeID связанного элемента:

1
2
3
4
5
6
7
<View>
    <Text nativeID="formLabel">Label for Input Field</Text>
    <TextInput
        aria-label="input"
        aria-labelledby="formLabel"
    />
</View>
Тип
string

aria-live

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

  • off Службы доступности не должны объявлять об изменениях в этом представлении.
  • polite Службы обеспечения доступности должны объявлять об изменениях в этом представлении.
  • assertive Службы доступа должны прерывать текущую речь, чтобы немедленно объявить об изменениях в этом представлении.
Тип По-умолчанию
enum('assertive', 'off', 'polite') 'off'

aria-modal

Булево значение, указывающее, должен ли VoiceOver игнорировать элементы в представлениях, которые являются родными братьями и сестрами приемника. Имеет приоритет перед параметром accessibilityViewIsModal.

Тип По-умолчанию
boolean false

aria-selected

Указывает, выбран ли выбираемый элемент в данный момент или нет.

Тип
boolean

aria-valuemax

Представляет максимальное значение для компонентов, основанных на диапазоне, таких как ползунки и прогресс-бары. Имеет приоритет над значением max в пропсе accessibilityValue.

Тип
number

aria-valuemin

Представляет минимальное значение для компонентов, основанных на диапазоне, таких как ползунки и прогресс-бары. Имеет приоритет над значением min в пропсе accessibilityValue.

Тип
number

aria-valuenow

Представляет текущее значение для компонентов, основанных на диапазоне, таких как ползунки и прогресс-бары. Имеет приоритет над значением now в пропсе accessibilityValue.

Тип
number

aria-valuetuetext

Представляет собой текстовое описание компонента. Имеет приоритет над значением text в пропсе accessibilityValue.

Тип
string

collapsable

Представления, которые используются только для компоновки своих дочерних элементов или иным образом ничего не рисуют, могут быть автоматически удалены из родной иерархии в качестве оптимизации. Установите это свойство в false, чтобы отключить эту оптимизацию и обеспечить существование этого View в иерархии нативных представлений.

Тип
bool

focusable

Должен ли этот View быть фокусируемым с помощью несенсорного устройства ввода, например, получать фокус с аппаратной клавиатуры.

Тип
boolean

hitSlop

Определяет, на каком расстоянии от экрана может начинаться событие касания. Типичные рекомендации по интерфейсу рекомендуют использовать сенсорные цели размером не менее 30-40 точек/пикселей, не зависящих от плотности.

Например, если высота touchable view равна 20, то высоту touchable можно увеличить до 40 с помощью hitSlop={{top: 10, bottom: 10, left: 0, right: 0}}.

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

Тип
object: {top: number, left: number, bottom: number, right: number}

id

Используется для определения местоположения данного представления из нативных классов. Имеет приоритет над пропсом nativeID.

Это отключает оптимизацию "удаления вида только для макета" для этого вида!

Тип
string

importantForAccessibility

Управляет тем, насколько представление важно для доступности, а именно: вызывает ли оно события доступности и сообщается ли о нем службам доступности, которые запрашивают экран. Работает только для Android.

Возможные значения:

  • auto — Система определяет, важно ли представление для доступности — по умолчанию (рекомендуется).
  • yes — Представление важно для доступности.
  • no — Представление не важно для доступности.
  • no-hide-descendants — Представление не является важным для доступности, как и все его потомки.

Для справки смотрите Android importantForAccessibility docs.

Тип
enum('auto', 'yes', 'no', 'no-hide-descendants')

nativeID

Используется для определения местоположения этого представления из собственных классов.

Это отключает оптимизацию "удаления вида только для макета" для этого вида!

Тип
string

needsOffscreenAlphaCompositing

Нужно ли выводить этот View за пределы экрана и компоновать его с альфа-значением, чтобы сохранить 100% правильные цвета и поведение смешивания. По умолчанию (false) компонент и его дочерние элементы отрисовываются с альфой, применяемой к краске, используемой для отрисовки каждого элемента, вместо того, чтобы выводить весь компонент за пределы экрана и компоновать его обратно с альфой. Это значение по умолчанию может быть заметным и нежелательным в случае, когда View, для которого вы устанавливаете непрозрачность, имеет несколько перекрывающихся элементов (например, несколько перекрывающихся View, или текст и фон).

Рендеринг за пределами экрана для сохранения корректного поведения альфа-канала является чрезвычайно дорогим и трудно отлаживаемым для неродных разработчиков, поэтому он не включен по умолчанию. Если вам необходимо включить это свойство для анимации, подумайте о том, чтобы объединить его с renderToHardwareTextureAndroid, если содержимое представления статично (т.е. его не нужно перерисовывать каждый кадр). Если это свойство включено, представление будет отрисовано за пределами экрана один раз, сохранено в аппаратной текстуре, а затем композитировано на экран с альфой каждый кадр без необходимости переключения целей рендеринга на GPU.

Тип
bool

nextFocusDown

Назначает следующее представление, которое будет получать фокус, когда пользователь перемещается вниз. См. документацию по Android.

Тип
number

nextFocusForward

Назначает следующее представление, которое будет получать фокус, когда пользователь перемещается вперед. См. документацию по Android.

Тип
number

nextFocusLeft

Назначает следующее представление, которое будет получать фокус при навигации пользователя влево. См. документацию по Android.

Тип
number

nextFocusRight

Назначает следующее представление для получения фокуса, когда пользователь перемещается вправо. См. документацию по Android.

Тип
number

nextFocusUp

Назначает следующее представление, которое будет получать фокус при навигации пользователя вверх. См. документацию по Android.

Тип
number

onAccessibilityAction

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

Дополнительную информацию см. в Руководстве по доступности.

Тип
function

onAccessibilityEscape

Если accessible имеет значение true, система будет вызывать эту функцию, когда пользователь выполнит жест выхода.

Тип
function

onAccessibilityTap

Если accessible имеет значение true, система попытается вызвать эту функцию, когда пользователь выполнит жест касания доступности.

Тип
function

onLayout

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

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

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

onMagicTap

Если accessible имеет значение true, система будет вызывать эту функцию, когда пользователь выполнит жест magic tap.

Тип
function

onMoveShouldSetResponder

Хочет ли это представление "претендовать" на отзывчивость на прикосновение? Это вызывается для каждого движения прикосновения к View, когда он не является ответчиком.

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

onMoveShouldSetResponderCapture

Если родительский View хочет запретить дочернему View стать ответчиком при перемещении, он должен иметь этот обработчик, который возвращает true.

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

onResponderGrant

Представление теперь реагирует на события прикосновения. Сейчас самое время выделить и показать пользователю, что происходит.

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

onResponderMove

Пользователь перемещает свой палец.

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

onResponderReject

Другой ответчик уже активен и не выпустит его для того View, который просит быть ответчиком.

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

onResponderRelease

Уволен в конце касания.

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

onResponderTerminate

Ответчик был забран из View. Может быть взят другими представлениями после вызова onResponderTerminationRequest, или может быть взят ОС без запроса (например, происходит с центром управления/центром уведомлений на iOS).

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

onResponderTerminationRequest

Какой-то другой View хочет стать отвечающим и просит этот View освободить своего отвечающего. Возврат true позволяет освободить его.

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

onStartShouldSetResponder

Хочет ли это представление стать ответчиком в начале касания?

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

onStartShouldSetResponderCapture

Если родительский View хочет предотвратить превращение дочернего View в ответчика при запуске касания, он должен иметь этот обработчик, который возвращает true.

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

Управляет тем, может ли View быть целью событий касания.

  • auto: Вид может быть целью событий касания.
  • none: Вид никогда не является целью событий касания.
  • box-none: Представление никогда не является целью событий касания, но его вложенные представления могут быть. Это ведет себя так же, как если бы вид имел следующие классы в CSS:
1
2
3
4
5
6
.box-none {
    pointer-events: none;
}
.box-none * {
    pointer-events: auto;
}
1
2
3
4
5
6
.box-only {
    pointer-events: auto;
}
.box-only * {
    pointer-events: none;
}
Тип
enum('box-none', 'none', 'box-only', 'auto')

removeClippedSubviews

Это зарезервированное свойство производительности, открытое RCTView, полезно для прокрутки содержимого при наличии большого количества вложенных представлений, большинство из которых находится за пределами экрана. Чтобы это свойство было эффективным, оно должно быть применено к представлению, которое содержит много вложенных представлений, выходящих за его границы. Подвиды также должны иметь overflow: hidden, как и содержащее их представление (или одно из его супервидов).

Тип
bool

renderToHardwareTextureAndroid

Должен ли этот View рендерить себя (и все свои дочерние элементы) в единую аппаратную текстуру на GPU.

На Android это полезно для анимаций и взаимодействий, которые изменяют только непрозрачность, поворот, перевод и/или масштаб: в этих случаях не нужно перерисовывать представление и повторно выполнять списки отображения. Текстуру можно использовать повторно и повторно компоновать с разными параметрами. Недостатком является то, что это может использовать ограниченную видеопамять, поэтому этот параметр следует вернуть в false в конце взаимодействия/анимации.

Тип
bool

role

роль передает назначение компонента пользователю вспомогательной технологии. Имеет приоритет над пропсом accessibilityRole.

Тип
Role

shouldRasterizeIOS

Должен ли этот View быть отображен как растровое изображение перед композитингом.

На iOS это полезно для анимаций и взаимодействий, которые не изменяют размеры этого компонента и его дочерних элементов; например, при трансляции положения статического представления растеризация позволяет рендереру повторно использовать кэшированную битовую карту статического представления и быстро компоновать ее во время каждого кадра.

Тип
bool

style

Тип
View Style

tabIndex

Должен ли этот View быть фокусируемым с помощью несенсорного устройства ввода, например, получать фокус с аппаратной клавиатуры.

Поддерживает следующие значения:

  • 0 — Вид находится в фокусе
  • -1 — Вид не фокусируется
Тип
enum(0, -1)

testID

Используется для размещения этого представления в сквозных тестах.

Это отключает оптимизацию "удаления вида только для макета" для этого вида!

Тип
string

Комментарии