Навигатор по нижним вкладкам Material¶
Панель вкладок в нижней части экрана, выполненная в стиле Material-Design, позволяет переключаться между различными маршрутами с помощью анимации. Маршруты инициализируются лениво - их экранные компоненты не устанавливаются до тех пор, пока они не будут впервые сфокусированы.
Здесь используется компонент BottomNavigation из react-native-paper. Если вы настроите плагин Babel, то он не будет включать всю библиотеку react-native-paper в ваш бандл.
Установка¶
Чтобы использовать этот навигатор, убедитесь, что у вас есть @react-navigation/native и его зависимости (следуйте этому руководству), затем установите @react-navigation/material-bottom-tabs:
1 | |
Этот API также требует установки react-native-vector-icons! Если вы используете Expo managed workflow, то он будет работать без дополнительных шагов. В противном случае следуйте этим инструкциям по установке.
Чтобы использовать этот навигатор вкладок, импортируйте его из @react-navigation/material-bottom-tabs.
API Определение¶
💡 Если при использовании createMaterialBottomTabNavigator вы столкнулись с какими-либо ошибками, пожалуйста, открывайте проблемы на react-native-paper, а не в репозитории react-navigation!
Чтобы использовать этот навигатор вкладок, импортируйте его из @react-navigation/material-bottom-tabs:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
Полное руководство по использованию приведено на сайте Tab Navigation
RouteConfigs¶
Объект route configs представляет собой отображение имени маршрута на конфигурацию маршрута.
Пропсы¶
Компонент Tab.Navigator принимает следующие параметры:
id¶
Необязательный уникальный идентификатор навигатора. Он может быть использован с помощью navigation.getParent для ссылки на этот навигатор в дочернем навигаторе.
initialRouteName¶
Имя маршрута, которое должно отображаться при первой загрузке навигатора.
screenOptions¶
Параметры по умолчанию, используемые для экранов в навигаторе.
backBehavior¶
Этот параметр управляет тем, что происходит при вызове goBack в навигаторе. Это включает в себя нажатие кнопки "назад" на устройстве или жест "назад" на Android.
Поддерживаются следующие значения:
firstRoute- возврат на первый экран, заданный в навигаторе (по умолчанию)initialRoute- возврат к начальному экрану, переданному в параметреinitialRouteName, если значение не передано, то по умолчанию возвращается к первому экрануorder- возврат к экрану, определенному перед сфокусированным экраномhistory- возврат к последнему посещенному экрану в навигаторе; если один и тот же экран посещается несколько раз, то старые записи удаляются из историиnone- не обрабатывать кнопку "Назад"
shifting¶
Если используется стиль сдвига, то значок активной вкладки сдвигается вверх, чтобы показать ярлык, а неактивные вкладки не будут иметь ярлыка.
По умолчанию это значение true, если у вас более 3 вкладок. Передайте shifting={false}, чтобы явно отключить эту анимацию, или shifting={true}, чтобы всегда использовать эту анимацию.
labeled¶
Показывать ли ярлыки на вкладках. Если false, то будут отображаться только значки.
activeColor¶
Пользовательский цвет для значка и ярлыка на активной вкладке.
inactiveColor¶
Пользовательский цвет для значка и метки на неактивной вкладке.
barStyle¶
Стиль для нижней панели навигации. Здесь можно передать пользовательский цвет фона:
1 2 3 4 5 6 7 8 | |
Если на Android используется полупрозрачная панель навигации, то здесь также можно задать нижнюю подложку:
1 2 3 4 5 6 7 8 | |
Опции¶
Для настройки экранов в навигаторе можно использовать следующие options:
title¶
Общий заголовок, который может использоваться в качестве запасного варианта для headerTitle и tabBarLabel.
tabBarIcon¶
Функция, которая при задании { focused: boolean, color: string } возвращает узел React.Node для отображения в панели вкладок.
tabBarColor¶
Цвет для панели вкладок, когда активна вкладка, соответствующая экрану. Используется для эффекта пульсации. Поддерживается только в том случае, если shifting имеет значение true.
tabBarLabel¶
Строка заголовка вкладки, отображаемая на панели вкладок. При неопределенности используется сцена title. Для скрытия см. опцию labeled в предыдущем разделе.
tabBarBadge¶
Значок, который будет отображаться на значке вкладки, может быть true для отображения точки, string или number для отображения текста.
tabBarAccessibilityLabel¶
Метка доступности для кнопки вкладки. Она считывается программой чтения с экрана, когда пользователь нажимает кнопку вкладки. Рекомендуется установить это значение, если у вас нет метки для вкладки.
tabBarTestID¶
ID для размещения этой кнопки вкладки в тестах.
События¶
Навигатор может выдавать события на определенные действия. Поддерживаются следующие события:
tabPress¶
Это событие возникает, когда пользователь нажимает кнопку вкладки для текущего экрана на панели вкладок. По умолчанию нажатие кнопки вкладки выполняет несколько действий:
- Если вкладка не сфокусирована, то нажатие кнопки вкладки фокусирует эту вкладку.
- Если вкладка уже сфокусирована:
- Если экран для вкладки отображается в виде прокрутки, то можно использовать
useScrollToTopдля прокрутки в верхнее положение. - Если на экране вкладки отображается стековый навигатор, то для стека выполняется действие
popToTop.
- Если экран для вкладки отображается в виде прокрутки, то можно использовать
Чтобы предотвратить поведение по умолчанию, можно вызвать event.preventDefault:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Хелперы¶
Навигатор вкладок добавляет в реквизит навигации следующие методы:
jumpTo¶
Осуществляет переход к существующему экрану в навигаторе вкладок. Метод принимает следующие аргументы:
name- string - Имя маршрута, на который необходимо перейти.params- object - Параметры экрана для передачи маршруту назначения.
1 | |
Пример¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | |
Использование с react-native-paper (опционально)¶
Вы можете использовать поддержку тематики в react-native-paper для настройки нижней навигации материала, обернув свое приложение в Provider из react-native-paper. Частым случаем использования этой функции может быть настройка цвета фона для экранов, когда ваше приложение имеет темную тему. Следуйте инструкциям в документации по react-native-paper, чтобы узнать, как настроить тему.
