React Native Academy · درس

التنقل بين الشاشات وتمرير المعلمات

استخدم navigation.navigate للانتقال بين الشاشات، ومرّر المعلمات في الوسيط الثاني، واقرأها باستخدام route.params في الشاشة الوجهة.

الدرس 2 من 413 خطوة

التنقل بين الشاشات وتمرير المعلمات درس مجاني في React Native Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Native Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Native Academy 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

The navigation Prop in Screens

Every component registered as a screen in a React Navigation navigator automatically receives a navigation prop. This object provides methods to move between screens, go back, and manage the navigation stack. You can also access it in nested components using the useNavigation hook.

function HomeScreen({ navigation }) {
  // navigation.navigate, navigation.goBack, etc.
  return <View />;
}

Navigating with navigation.navigate

Call navigation.navigate('ScreenName') to move to another screen. If the screen is already in the stack and you navigate to it again, React Navigation will go to the existing instance rather than adding a duplicate. Use navigation.push('ScreenName') to always push a new instance.

function HomeScreen({ navigation }) {
  return (
    <Button
      title='Go to Details'
      onPress={() => navigation.navigate('Details')}
    />
  );
}

Going Back with navigation.goBack

Call navigation.goBack() to pop the current screen off the stack and return to the previous one. On iOS the swipe-back gesture is enabled by default. On Android, the hardware back button calls goBack automatically. Use navigation.popToTop() to jump all the way back to the first screen.

function DetailsScreen({ navigation }) {
  return (
    <Button
      title='Go Back'
      onPress={() => navigation.goBack()}
    />
  );
}

Passing Params When Navigating

Pass a second argument to navigation.navigate to send parameters to the destination screen. The params object can contain any serializable data — IDs, strings, booleans. Avoid passing complex non-serializable objects like class instances or functions.

function HomeScreen({ navigation }) {
  return (
    <Button
      title='View Post'
      onPress={() =>
        navigation.navigate('Details', {
          postId: 42,
          title: 'React Navigation Deep Dive',
        })
      }
    />
  );
}

Reading Params with route.params

The destination screen receives a route prop alongside the navigation prop. Access the parameters you passed via route.params. Always provide defaults in case a screen is opened without params, for example when it is the initial screen.

function DetailsScreen({ route, navigation }) {
  const { postId, title } = route.params ?? {};
  return (
    <View>
      <Text>Post ID: {postId}</Text>
      <Text>Title: {title}</Text>
    </View>
  );
}

Default Params on Stack.Screen

Set initialParams on a Stack.Screen to provide default parameter values. These defaults merge with any params passed at runtime, so the screen always has a complete set of values to work with, even when opened as the initial route.

<Stack.Screen
  name='Details'
  component={DetailsScreen}
  initialParams={{ postId: 0, title: 'Unknown' }}
/>

Updating Params from a Screen

A screen can update its own params using navigation.setParams. This is useful when an action on the current screen (like editing a form field) should be reflected in the navigation header title. The params update triggers a re-render of the screen.

function DetailsScreen({ route, navigation }) {
  const { title } = route.params;

  return (
    <Button
      title='Update Title'
      onPress={() => navigation.setParams({ title: 'Updated Title' })}
    />
  );
}

Using useNavigation Hook

Deep child components that are not registered screens do not receive the navigation prop automatically. Use the useNavigation() hook from React Navigation to access the navigation object anywhere inside the navigator tree without prop drilling.

import { useNavigation } from '@react-navigation/native';

function MyButton() {
  const navigation = useNavigation();
  return (
    <Button
      title='Go to Profile'
      onPress={() => navigation.navigate('Profile')}
    />
  );
}

Using useRoute Hook

Similarly, use the useRoute() hook to access route.params in a non-screen component. This is useful when you have a deeply nested component that needs to read the current screen's parameters without threading the route prop through every level.

import { useRoute } from '@react-navigation/native';

function PostHeader() {
  const route = useRoute();
  const { title } = route.params ?? {};
  return <Text style={{ fontWeight: 'bold' }}>{title}</Text>;
}

Setting the Header Title from Params

You can dynamically set the navigation header title based on route params by passing a function to the options prop. The function receives the route object, allowing you to use param values as the screen title without extra state.

<Stack.Screen
  name='Details'
  component={DetailsScreen}
  options={({ route }) => ({ title: route.params.title ?? 'Details' })}
/>

Navigating Back and Sending Data Back

To send data from a child screen back to its parent, use navigation.navigate with the parent screen's name and include the return data as params. The parent screen will receive the updated params. Alternatively, pass a callback function as a param to the child screen and call it before going back.

// In child screen
navigation.navigate('Home', { selectedItem: 'apple' });

// In parent screen — read route.params.selectedItem

Quick Check

Test your understanding of React Navigation screen navigation and params from this lesson.

Lesson Recap

In this lesson you learned: use navigation.navigate to move to another screen, pass params as the second argument to navigate, and read params with route.params in the destination screen. Next up we explore the Bottom Tab Navigator.

البدء مجانًا

تعلم JavaScript مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

الأسئلة الشائعة

هل درس «التنقل بين الشاشات وتمرير المعلمات» مجاني؟

نعم — نص درس «التنقل بين الشاشات وتمرير المعلمات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Native Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Native Academy 4 دروس في المجموع.

ماذا ستتعلم في «التنقل بين الشاشات وتمرير المعلمات»؟

استخدم navigation.navigate للانتقال بين الشاشات، ومرّر المعلمات في الوسيط الثاني، واقرأها باستخدام route.params في الشاشة الوجهة. تتمرن على React Native Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Native Academy؟

لا تُشترط خبرة سابقة. React Native Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «التنقل بين الشاشات وتمرير المعلمات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Native Academy هذا؟

نعم. كل درس في React Native Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

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

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