0Pricing
React Native Academy · درس

ملاح علامات التبويب السفلية

أنشئ ملاح علامات تبويب سفلية يحوي ثلاث علامات، وخصّص أيقونة كل علامة باستخدام مكتبة أيقونات متجهة، واضبط لون التمييز للعلامة النشطة.

ملاح علامات التبويب السفلية درس مجاني في 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-tabs

Creating 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تثبيت React Navigation وضبطه
  2. التنقل بين الشاشات وتمرير المعلمات
  3. ملاح علامات التبويب السفلية
  4. ملاح القائمة الجانبية والملاحون المتداخلون
← العودة إلى React Native Academy