Навигатор нижних вкладок
Создайте навигатор нижних вкладок с тремя вкладками, настройте значок каждой вкладки с помощью библиотеки векторных значков и задайте цвет активной вкладки.
«Навигатор нижних вкладок» — бесплатный урок React Native Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Native Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Native Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
What is a Bottom Tab Navigator?
A bottom tab navigator renders a tab bar at the bottom of the screen with one tab per registered screen. Tapping a tab switches to that screen. This pattern is very common in mobile apps (Instagram, Twitter, Airbnb) and is provided by the @react-navigation/bottom-tabs package.
Installing the Bottom Tabs Package
Install the bottom tabs navigator package separately from the React Navigation core. If you are using Expo, also make sure react-native-screens and react-native-safe-area-context are already installed from the previous setup step.
npm install @react-navigation/bottom-tabsCreating the Tab Navigator
Call createBottomTabNavigator() to get a Tab object with Tab.Navigator and Tab.Screen components. Register screens exactly as you would in a stack navigator. Each Tab.Screen name becomes the default tab label.
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
const Tab = createBottomTabNavigator();
function MyTabs() {
return (
<Tab.Navigator>
<Tab.Screen name='Home' component={HomeScreen} />
<Tab.Screen name='Search' component={SearchScreen} />
<Tab.Screen name='Profile' component={ProfileScreen} />
</Tab.Navigator>
);
}Adding Icons to Tab Screens
Each tab should have an icon to help users recognize it quickly. Use tabBarIcon inside the screen's options prop. The render function receives a focused boolean and a color so you can render different icons or colors for active vs inactive tabs.
import { Ionicons } from '@expo/vector-icons';
<Tab.Screen
name='Home'
component={HomeScreen}
options={{
tabBarIcon: ({ focused, color, size }) => (
<Ionicons
name={focused ? 'home' : 'home-outline'}
size={size}
color={color}
/>
),
}}
/>Customizing Active and Inactive Colors
Set tabBarActiveTintColor and tabBarInactiveTintColor in screenOptions to control the color of tab icons and labels for the selected and unselected states. These color values are passed into the tabBarIcon render function automatically.
<Tab.Navigator
screenOptions={{
tabBarActiveTintColor: '#6200ee',
tabBarInactiveTintColor: '#888',
}}
>Hiding the Tab Bar on Specific Screens
Sometimes you want to hide the tab bar when navigating to a detail screen. Set tabBarStyle: { display: 'none' } in the screen's options or use the navigation prop to toggle it dynamically with navigation.setOptions.
<Tab.Screen
name='Details'
component={DetailsScreen}
options={{ tabBarStyle: { display: 'none' } }}
/>Changing Tab Label and Badge
Override the tab label with tabBarLabel in the screen options. Add a notification badge using tabBarBadge to show a count indicator on the icon — useful for messaging or notification tabs. Set tabBarBadge to a number or string.
<Tab.Screen
name='Messages'
component={MessagesScreen}
options={{
tabBarLabel: 'Inbox',
tabBarBadge: 3,
}}
/>Styling the Tab Bar Background
Customize the tab bar background color and border using tabBarStyle in screenOptions. You can set backgroundColor, borderTopColor, elevation (Android shadow), and height to match your design system.
<Tab.Navigator
screenOptions={{
tabBarStyle: {
backgroundColor: '#1a1a2e',
borderTopColor: '#333',
height: 60,
},
tabBarLabelStyle: { fontSize: 12, paddingBottom: 4 },
}}
>Navigating Between Tabs Programmatically
Use navigation.navigate('TabName') to switch to a specific tab from any screen within the navigator. This is useful when a button action in one tab should take the user to another section of the app. The active tab's state is preserved.
function HomeScreen({ navigation }) {
return (
<Button
title='Go to Profile'
onPress={() => navigation.navigate('Profile')}
/>
);
}Listening to Tab Press Events
Use the tabPress event on navigation to intercept a tab press. This is useful for scrolling a list back to the top when the user taps the active tab. Call e.preventDefault() if you want to handle the press yourself without the default navigation action.
navigation.addListener('tabPress', (e) => {
// Prevent default behavior
e.preventDefault();
// Custom action: scroll to top, show modal, etc.
});Nesting a Stack Inside a Tab
In real apps each tab often contains its own stack of screens. Simply nest a Stack.Navigator as the component for a Tab.Screen. The stack renders inside the tab area while the tab bar remains visible at the bottom of the screen.
function HomeStack() {
return (
<Stack.Navigator>
<Stack.Screen name='Home' component={HomeScreen} />
<Stack.Screen name='Post' component={PostScreen} />
</Stack.Navigator>
);
}
<Tab.Screen name='HomeTab' component={HomeStack} />Quick Check
Test your understanding of Bottom Tab Navigator concepts from this lesson.
Lesson Recap
In this lesson you learned: install and create a bottom tab navigator with createBottomTabNavigator, add icons using tabBarIcon in screen options, and customize colors, labels, and badges globally via screenOptions. Next up we explore the Drawer Navigator and nested navigators.
Часто задаваемые вопросы
Урок «Навигатор нижних вкладок» бесплатный?
Да — полный текст урока «Навигатор нижних вкладок» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Native Academy, подпишись на CoddyKit PRO. Курс React Native Academy содержит 4 уроков всего.
Чему я научусь в уроке «Навигатор нижних вкладок»?
Создайте навигатор нижних вкладок с тремя вкладками, настройте значок каждой вкладки с помощью библиотеки векторных значков и задайте цвет активной вкладки. Ты практикуешь React Native Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать React Native Academy?
Предыдущий опыт не требуется. React Native Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Навигатор нижних вкладок»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке React Native Academy?
Да. Каждый урок React Native Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Установка и настройка React Navigation
- Переходы между экранами и передача параметров
- Навигатор нижних вкладок
- Навигатор боковой панели и вложенные навигаторы