Bird
Raised Fist0
React Nativemobile~20 mins

Why navigation manages screen flow in React Native - Build It to Prove It

Choose your learning style10 modes available
Build: Simple Navigation Flow
This screen shows how navigation controls the flow between two screens in a React Native app. It helps users move from one screen to another and back.
Target UI
Screen 1: Home
+---------------------+
|      Home Screen     |
|                     |
|  [Go to Details]     |
+---------------------+

Screen 2: Details
+---------------------+
|    Details Screen    |
|                     |
|  [Go Back]           |
+---------------------+
Create two screens: Home and Details
Home screen has a button labeled 'Go to Details' that navigates to Details screen
Details screen has a button labeled 'Go Back' that navigates back to Home screen
Use React Navigation to manage screen flow
Starter Code
React Native
import React from 'react';
import { Button, View, Text } from 'react-native';

export default function App() {
  // TODO: Setup navigation container and stack navigator
  // TODO: Create HomeScreen and DetailsScreen components
  // TODO: Implement navigation between screens
  return null;
}
Task 1
Task 2
Task 3
Solution
React Native
import React from 'react';
import { Button, View, Text } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

const Stack = createNativeStackNavigator();

function HomeScreen({ navigation }) {
  return (
    <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
      <Text>Home Screen</Text>
      <Button title="Go to Details" onPress={() => navigation.navigate('Details')} />
    </View>
  );
}

function DetailsScreen({ navigation }) {
  return (
    <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
      <Text>Details Screen</Text>
      <Button title="Go Back" onPress={() => navigation.goBack()} />
    </View>
  );
}

export default function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
        <Stack.Screen name="Details" component={DetailsScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

This app uses React Navigation to manage screen flow. We create a stack navigator that holds two screens: Home and Details.

The HomeScreen has a button labeled 'Go to Details'. When pressed, it calls navigation.navigate('Details') to move to the Details screen.

The DetailsScreen has a button labeled 'Go Back'. When pressed, it calls navigation.goBack() to return to the previous screen, which is Home.

This shows how navigation manages the flow between screens, letting users move forward and backward in the app.

Final Result
Completed Screen
Screen 1: Home
+---------------------+
|      Home Screen     |
|                     |
|  [Go to Details]     |
+---------------------+

Screen 2: Details
+---------------------+
|    Details Screen    |
|                     |
|  [Go Back]           |
+---------------------+
Tap 'Go to Details' button on Home screen navigates to Details screen
Tap 'Go Back' button on Details screen returns to Home screen
Stretch Goal
Add a header title that changes based on the screen
💡 Hint
Use the options prop on Stack.Screen to set a title for each screen

Practice

(1/5)
1. Why do we use navigation in a React Native app?
Navigation helps us to:
easy
A. Increase the app's font size
B. Move between different screens smoothly
C. Change the app's background color
D. Store user data permanently

Solution

  1. Step 1: Understand the purpose of navigation

    Navigation is designed to help users move between different screens or pages in an app.
  2. Step 2: Identify the correct function of navigation

    Changing colors or storing data are not related to navigation's main role.
  3. Final Answer:

    Move between different screens smoothly -> Option B
  4. Quick Check:

    Navigation controls screen flow = C [OK]
Hint: Navigation is about moving between screens [OK]
Common Mistakes:
  • Confusing navigation with styling
  • Thinking navigation stores data
  • Assuming navigation changes fonts
2. Which of the following is the correct way to create a stack navigator in React Navigation?
easy
A. const Stack = new StackNavigator();
B. const Stack = createNavigatorStack();
C. const Stack = StackNavigator.create();
D. const Stack = createStackNavigator();

Solution

  1. Step 1: Recall React Navigation syntax

    The official way to create a stack navigator is by calling createStackNavigator() function.
  2. Step 2: Check each option's syntax

    Only const Stack = createStackNavigator(); matches the correct function call and syntax.
  3. Final Answer:

    const Stack = createStackNavigator(); -> Option D
  4. Quick Check:

    Correct function name = B [OK]
Hint: Remember the exact function name createStackNavigator() [OK]
Common Mistakes:
  • Using 'new' keyword incorrectly
  • Mixing function and object syntax
  • Swapping words in function name
3. Given this React Navigation code snippet:
navigation.navigate('Profile');

What happens when this line runs?
medium
A. The app reloads the current screen
B. The app closes immediately
C. The app moves to the Profile screen
D. An error is thrown because navigate is undefined

Solution

  1. Step 1: Understand navigation.navigate()

    This function moves the user to the named screen, here 'Profile'.
  2. Step 2: Analyze the options

    Only The app moves to the Profile screen correctly describes moving to the Profile screen; others describe unrelated or error states.
  3. Final Answer:

    The app moves to the Profile screen -> Option C
  4. Quick Check:

    navigation.navigate('ScreenName') moves screens = A [OK]
Hint: navigate('ScreenName') changes screen [OK]
Common Mistakes:
  • Thinking navigate reloads or closes app
  • Confusing navigate with goBack
  • Assuming navigate causes errors without context
4. What is wrong with this React Navigation code?
function HomeScreen() {
  return (
    <Button title="Go" onPress={() => navigation.navigate('Details')} />
  );
}
medium
A. navigation is not defined inside HomeScreen
B. Button component cannot have onPress
C. navigate should be navigateTo
D. Title prop should be lowercase

Solution

  1. Step 1: Check variable usage in HomeScreen

    The code uses navigation.navigate but navigation is not passed or imported in the function.
  2. Step 2: Verify other options

    Button supports onPress, navigate is correct method, and Title prop is case-sensitive but correct here.
  3. Final Answer:

    navigation is not defined inside HomeScreen -> Option A
  4. Quick Check:

    navigation must be defined or passed = A [OK]
Hint: Always pass or get navigation prop in screen components [OK]
Common Mistakes:
  • Forgetting to get navigation prop
  • Misnaming navigate method
  • Misunderstanding Button props
5. You want to allow users to go back to the previous screen after navigating forward. Which React Navigation method should you use to manage this screen flow?
hard
A. navigation.goBack()
B. navigation.reset()
C. navigation.push('ScreenName')
D. navigation.replace('ScreenName')

Solution

  1. Step 1: Understand navigation.goBack()

    This method moves the user back to the previous screen in the navigation stack.
  2. Step 2: Compare with other methods

    reset clears history, push adds a new screen, replace swaps current screen; only goBack moves backward.
  3. Final Answer:

    navigation.goBack() -> Option A
  4. Quick Check:

    Go back to previous screen = goBack() = D [OK]
Hint: Use goBack() to return to previous screen [OK]
Common Mistakes:
  • Using reset to go back (it clears history)
  • Confusing push with goBack
  • Thinking replace goes back
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard