Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1 of 196 menu
▶

Компонент View

Компонент View держит дочерние элементы и раскладывает их по правилам flexbox. Дочерние элементы пишут между открывающим и закрывающим тегом. Направление, отступы и размер задает параметр style. По умолчанию элементы встают столбцом и растягиваются по ширине родителя.

Синтаксис

<View> child1 child2 </View>

Параметры

Параметр Описание
children Дочерние элементы. На экран они попадают в том порядке, в каком записаны.
style Объект стиля: направление ряда, отступы и размер. Объект собирают через класс StyleSheet. Направление берется из перечисления FlexDirection.
onLayout Вызов в момент, когда известны ширина и высота контейнера.
pointerEvents Куда попадает касание по контейнеру и дочерним элементам. Строка из перечисления PointerEvents.
accessibilityLabel Подпись для чтения с экрана, если у элемента нет видимого текста.
accessibilityRole Роль элемента для чтения с экрана. Значение берется из перечисления AccessibilityRole.
accessibilityState Состояние для чтения с экрана: выбран, отключен, раскрыт.

Ключи стиля

Ключи ниже пишут внутри объекта style, а не отдельными параметрами View. Ключ flex задает, как элемент делит свободное место вдоль главной оси. Ключи flexGrow, flexShrink и flexBasis уточняют рост, сжатие и базовый размер.

Ключи margin и padding ставят внешний и внутренний отступ. Их можно задать одним числом или по сторонам через marginTop и похожие ключи. Ключ gap задает расстояние между соседними дочерними элементами в контейнере.

Ключи width и height задают ширину и высоту. Ключи minWidth, maxWidth, minHeight и maxHeight ограничивают размер. При position 'absolute' ключи top, left, right и bottom привязывают элемент к краям родителя. Ключ transform сдвигает, поворачивает или масштабирует элемент.

Давайте зададим отступы, размер и долю места у двух блоков в ряду:

import { View, Text, StyleSheet } from 'react-native'; export default function App() { return ( <View style={styles.wrap}> <View style={styles.boxA}> <Text>abcde</Text> </View> <View style={styles.boxB}> <Text>12345</Text> </View> </View> ); } const styles = StyleSheet.create({ wrap: { flexDirection: 'row', padding: 8, gap: 8, }, boxA: { flex: 1, marginRight: 4, minHeight: 40, }, boxB: { flex: 2, width: 120, maxWidth: 200, }, });

На экране оба блока встанут в ряд с зазором между ними. Первый займет меньшую долю ширины, второй растянется сильнее.

Пример

Давайте поставим два текста столбцом:

import { View, Text } from 'react-native'; export default function App() { return ( <View> <Text>abcde</Text> <Text>12345</Text> </View> ); }

На экране два текста встанут друг под другом и прижмутся к началу столбца.

Пример

Давайте поставим те же тексты в один ряд:

import { View, Text, StyleSheet } from 'react-native'; export default function App() { return ( <View style={styles.row}> <Text>abcde</Text> <Text>12345</Text> </View> ); } const styles = StyleSheet.create({ row: { flexDirection: 'row', }, });

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

Смотрите также

  • компонент SafeAreaView,
    который отступает от системных панелей
  • класс StyleSheet,
    который собирает объект стиля
  • перечисление FlexDirection,
    которое задает направление ряда
  • компонент Text,
    который рисует строку или абзац
→
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить