Nawigowanie między ekranami i przekazywanie parametrów
Użyj navigation.navigate do przechodzenia między ekranami, przekaż parametry w drugim argumencie i odczytaj je za pomocą route.params na ekranie docelowym.
Nawigowanie między ekranami i przekazywanie parametrów to bezpłatna lekcja React Native Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Native Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Native Academy zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
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.selectedItemQuick 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.
Ucz się JavaScript dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Nawigowanie między ekranami i przekazywanie parametrów” jest bezpłatna?
Tak — pełny tekst „Nawigowanie między ekranami i przekazywanie parametrów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Native Academy, przejdź na CoddyKit PRO. Kurs React Native Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Nawigowanie między ekranami i przekazywanie parametrów”?
Użyj navigation.navigate do przechodzenia między ekranami, przekaż parametry w drugim argumencie i odczytaj je za pomocą route.params na ekranie docelowym. Ćwiczysz React Native Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć React Native Academy?
Nie wymagamy żadnego doświadczenia. React Native Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Nawigowanie między ekranami i przekazywanie parametrów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji React Native Academy?
Tak. Każda lekcja React Native Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Instalowanie i konfigurowanie React Navigation
- Nawigowanie między ekranami i przekazywanie parametrów
- Nawigator dolnych kart
- Nawigator szuflady i zagnieżdżone nawigatory