Представление
Основной компонент для создания пользовательского интерфейса, View является контейнером, поддерживающим макетирование с помощью flexbox, стилей, обработки касаний и управления доступностью. View напрямую отображается в эквиваленте нативного представления на любой платформе, на которой работает React Native, будь то UIView, <div>, android.view, и т. д.
View предназначен для вложения внутри других представлений и может содержать от 0 до многих дочерних элементов любого типа.
Этот пример создает View, который обертывает две рамки с цветом и текстовым компонентом в ряд с отступами.
- Функциональный компонент
- Компонент класса
Viewразработаны для использования сStyleSheetдля ясности и производительности, хотя поддерживаются и встроенные стили.
Synthetic Touch Events
Для свойств реагирования на View (например, onResponderMove), синтетические события касания, переданные им, имеют вид PressEvent.
Справочник
Свойства
Accessibility Actions
Действия доступности позволяют вспомогательной технологии программно вызывать действия компонента. Свойство accessibilityActions должно содержать список объектов действий. Каждый объект действия должен содержать имя поля и метку.
Для получения дополнительной информации см. Руководство по доступности.
| Тип |
|---|
| массив |
AccessibilityElementsHidden (iOS) iOS
Значение, указывающее, скрыты ли элементы доступности, содержащиеся в этом элементе доступности. По умолчанию false.
Для получения дополнительной информации см. Руководство по доступности.
| Тип |
|---|
| логическое значение |
AccessibilityHint
Подсказка доступности помогает пользователям понять, что произойдет, когда они выполнят действие над элементом доступности, если этот результат не ясен из метки доступности.
| Тип |
|---|
| строка |
AccessibilityLanguage (iOS) iOS
Значение, указывающее, какой язык должен использовать экранный диктор при взаимодействии пользователя с элементом. Он должен соответствовать спецификации BCP 47.
Для получения дополнительной информации см. документацию iOS accessibilityLanguage.
| Тип |
|---|
| строка |
AccessibilityIgnoresInvertColors (iOS) iOS
Значение, указывающее, должен ли этот вид быть инвертирован при включении инверсии цветов. Значение true укажет виду, чтобы он не был инвертирован, даже если инверсия цветов включена.
Для получения дополнительной информации см. Руководство по доступности.
| Тип |
|---|
| логическое значение |
AccessibilityLabel
Переопределяет текст, который считывает экранный диктор при взаимодействии пользователя с элементом. По умолчанию метка строится путем обхода всех дочерних элементов и накопления всех узлов Text, разделенных пробелом.
| Тип |
|---|
| строка |
AccessibilityLiveRegion (Android) Android
Указывает службам доступности, следует ли уведомлять пользователя, когда этот вид изменяется. Работает только для Android API >= 19. Возможные значения:
-
'none'- Службы доступности не должны объявлять изменения в этом представлении. -
'polite'- Службы доступности должны объявлять изменения в этом представлении. -
'assertive'- Службы доступности должны прервать текущую речь, чтобы немедленно объявить изменения в этом представлении.
См. документацию Android View для справки.
| Тип |
|---|
| перечисление ('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'- Используется для представления панели инструментов (контейнера кнопок или компонентов действий).
| Тип |
|---|
| строка |
AccessibilityState
Описывает текущее состояние компонента для пользователя вспомогательной технологии.
Для получения дополнительной информации см. Руководство по доступности.
| Тип |
|---|
| объект: {disabled: bool, selected: bool, checked: bool или 'mixed', busy: bool, expanded: bool} |
AccessibilityValue
Представляет текущее значение компонента. Это может быть текстовое описание значения компонента, или для компонентов, основанных на диапазонах, таких как ползунки и индикаторы выполнения, содержит информацию о диапазоне (минимальное, текущее и максимальное).
Для получения дополнительной информации см. Руководство по доступности.
| Тип |
|---|
| объект: {min: число, max: число, now: число, text: строка} |
AccessibilityViewIsModal (iOS) iOS
Значение, указывающее, должна ли VoiceOver игнорировать элементы внутри представлений, которые являются братьями получателя. По умолчанию false.
Для получения дополнительной информации см. Руководство по доступности.
| Тип |
|---|
| логическое значение |
Accessible
Когда true, указывает, что представление является элементом доступности. По умолчанию все нажимаемые элементы доступны.
Collapsable (Android) Android
Представления, используемые только для макетирования своих дочерних элементов или не отображающие ничего, могут автоматически удаляться из нативного иерархии в качестве оптимизации. Установите это свойство в значение false для отключения этой оптимизации и обеспечения того, чтобы это View существовало в нативной иерархии представлений.
| Тип |
|---|
| логическое значение |
Focusable (Android) Android
Должен ли этот View быть фокусируемым с помощью устройства ввода, отличного от касания, например, получать фокус с помощью клавиатуры.
| Тип |
|---|
| логическое значение |
HitSlop
Это определяет, насколько далеко от представления может начаться событие касания. Типичные рекомендации по интерфейсу рекомендуют цели касания, которые находятся как минимум на 30-40 точек/независимых от плотности пикселей.
Например, если высота нажимаемого представления составляет 20, высоту нажимаемого элемента можно увеличить до 40 с помощью hitSlop={{top: 10, bottom: 10, left: 0, right: 0}}
Область касания никогда не выходит за пределы границ родительского представления, а индекс Z элементов-братьев всегда имеет приоритет, если касание попадает на два перекрывающихся представления.
| Тип |
|---|
| объект: {top: число, left: число, bottom: число, right: число} |
ImportantForAccessibility (Android) Android
Управляет важностью представления для доступности, т. е., генерирует ли оно события доступности и сообщается ли оно службам доступности, которые запрашивают экран. Действует только для Android.
Возможные значения:
-
'auto'- Система определяет, является ли представление важным для доступности - значение по умолчанию (рекомендуется). -
'yes'- Представление важно для доступности. -
'no'- Представление не важно для доступности. -
'no-hide-descendants'- Представление не важно для доступности, и ни одно из его дочерних представлений тоже.
См. Android importantForAccessibility документы для справки.
| Тип |
|---|
| перечисление('auto', 'yes', 'no', 'no-hide-descendants') |
nativeID
Используется для поиска этого представления из нативных классов.
Это отключает оптимизацию «удаление представления только для макета» для этого представления!
| Тип |
|---|
| строка |
needsOffscreenAlphaCompositing
Нужно ли это View отображать вне экрана и компоновать с альфой, чтобы сохранить 100% правильные цвета и поведение смешивания. Значение по умолчанию (false) возвращается к отрисовке компонента и его дочерних элементов с альфой, примененной к кисти, используемой для отрисовки каждого элемента, вместо отрисовки всего компонента вне экрана и композиции его обратно со значением альфы. Это значение по умолчанию может быть заметным и нежелательным в случае, когда View, по которому вы устанавливаете непрозрачность, имеет несколько перекрывающихся элементов (например, несколько перекрывающихся View или текст и фон).
Отрисовка вне экрана для сохранения правильного поведения альфы чрезвычайно дорогостоящая и сложная для отладки для разработчиков, не использующих нативный код, поэтому она не включена по умолчанию. Если вам нужно включить это свойство для анимации, рассмотрите возможность комбинировать его с renderToHardwareTextureAndroid, если содержимое представления является статичным (т.е. ему не нужно перерисовываться каждый кадр). Если это свойство включено, это представление будет отрисовано один раз вне экрана, сохранено в текстуре аппаратного ускорения, а затем композировано на экран с альфой каждый кадр, не переключаясь на целевые устройства отрисовки на графическом процессоре.
| Тип |
|---|
| логическое |
nextFocusDown Android
Определяет следующее представление, которое получит фокус, когда пользователь навигации вниз. См. документацию Android.
| Тип |
|---|
| число |
nextFocusForward Android
Определяет следующее представление, которое получит фокус, когда пользователь навигации вперед. См. документацию Android.
| Тип |
|---|
| число |
nextFocusLeft Android
Определяет следующее представление, которое получит фокус, когда пользователь навигации влево. См. документацию Android.
| Тип |
|---|
| число |
nextFocusRight Android
Определяет следующее представление, которое получит фокус, когда пользователь навигации вправо. См. документацию Android.
| Тип |
|---|
| число |
nextFocusUp Android
Определяет следующее представление, которое получит фокус, когда пользователь навигации вверх. См. документацию Android.
| Тип |
|---|
| число |
onAccessibilityAction
Вызывается, когда пользователь выполняет действия доступности. Единственным аргументом этой функции является событие, содержащее имя действия, которое нужно выполнить.
См. руководство по доступности для получения дополнительной информации.
| Тип |
|---|
| функция |
onAccessibilityEscape iOS
Когда accessible равно true, система вызовет эту функцию, когда пользователь выполнит жест выхода.
| Тип |
|---|
| функция |
onAccessibilityTap
Когда accessible равно true, система попытается вызвать эту функцию, когда пользователь выполнит жест нажатия доступности.
| Тип |
|---|
| функция |
onLayout
Вызывается при монтаже и при изменениях макета.
Это событие срабатывает сразу после того, как был рассчитан макет, но новый макет может еще не отображаться на экране во время получения события, особенно если в процессе анимация макета.
| Тип |
|---|
| ({ nativeEvent: LayoutEvent }) => void |
onMagicTap iOS
Когда accessible равно true, система вызовет эту функцию, когда пользователь выполнит жест волшебного нажатия.
| Тип |
|---|
| функция |
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 |
pointerEvents
Управляет тем, может ли View быть целевым объектом событий касания.
-
'auto': Представление может быть целевым объектом событий касания. -
'none': Представление никогда не является целевым объектом событий касания. -
'box-none': Представление никогда не является целевым объектом событий касания, но его подпредставления могут быть. Оно ведет себя так, как если бы представление имело следующие классы в CSS:
.box-none {
pointer-events: none;
}
.box-none * {
pointer-events: auto;
}
-
'box-only': Представление может быть целевым объектом событий касания, но его подпредставления не могут быть. Оно ведет себя так, как если бы представление имело следующие классы в CSS:
.box-only {
pointer-events: auto;
}
.box-only * {
pointer-events: none;
}
Поскольку
pointerEventsне влияет на макет/отображение, и мы уже отклоняемся от спецификации, добавляя дополнительные режимы, мы выбираем не включатьpointerEventsвstyle. На некоторых платформах нам пришлось бы реализовать это какclassNameв любом случае. Использованиеstyleили нет — это деталь реализации платформы.
| Тип |
|---|
| перечисление('box-none', 'none', 'box-only', 'auto') |
removeClippedSubviews
Это зарезервированное свойство производительности, экспонируемое RCTView, и оно полезно для прокрутки содержимого, когда есть много подпредставлений, большинство из которых находятся вне экрана. Для того, чтобы это свойство было эффективным, его нужно применить к представлению, содержащему много подпредставлений, которые выходят за пределы его границ. Подпредставления также должны иметь overflow: hidden, как и содержащее их представление (или одно из его предков).
| Тип |
|---|
| логическое |
renderToHardwareTextureAndroid Android
Определяет, нужно ли этому View отображать себя (и все свои дочерние элементы) в отдельной текстуре аппаратного ускорения на GPU.
На Android это полезно для анимаций и взаимодействий, которые изменяют только непрозрачность, поворот, смещение и/или масштаб: в этих случаях виджету не нужно перерисовываться, и списки отображения не нужно повторно исполнять. Текстура может быть повторно использована и наложена с различными параметрами. Недостаток заключается в том, что это может занять ограниченную видеопамять, поэтому этот параметр следует установить обратно в значение false по завершении взаимодействия/анимации.
| Тип |
|---|
| bool |
shouldRasterizeIOS iOS
Определяет, нужно ли этому View отображаться как растровый образ перед наложением.
На iOS это полезно для анимаций и взаимодействий, которые не изменяют размеры этого компонента или его дочерних элементов; например, при изменении положения статического виджета растрирование позволяет рендереру повторно использовать кэшированный растровый образ статического виджета и быстро накладывать его во время каждого кадра.
Растрирование вызывает дополнительный проход отрисовки вне экрана, а растровый образ потребляет память. Тестируйте и измеряйте использование этого свойства.
| Тип |
|---|
| bool |
style
| Тип |
|---|
| Стиль виджета |
testID
Используется для определения местоположения этого виджета в тестах конечного пользователя.
Это отключает оптимизацию удаления только-для-раскладки виджетов для этого виджета!
| Тип |
|---|
| строка |
© 2022 Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License.
https://reactnative.dev/docs/view