En aquest tema, aprendrem com passar paràmetres entre diferents pantalles utilitzant React Navigation. Això és essencial per a la majoria d'aplicacions, ja que sovint necessitem transferir dades d'una pantalla a una altra.
Objectius
- Comprendre com passar paràmetres a les rutes.
- Aprendre a accedir als paràmetres en la pantalla de destinació.
- Veure exemples pràctics de com utilitzar aquests paràmetres.
Passar paràmetres a les rutes
- Configuració inicial
Abans de començar, assegura't que tens React Navigation configurat en el teu projecte. Si no ho has fet, segueix les instruccions del tema anterior sobre la configuració de React Navigation.
- Passar paràmetres amb
navigate
navigate
Per passar paràmetres a una ruta, utilitzem el mètode navigate
i passem un objecte com a segon argument. Aquest objecte conté els paràmetres que volem passar.
// Navegar a la pantalla 'Details' amb paràmetres navigation.navigate('Details', { itemId: 86, otherParam: 'qualsevol valor', });
- Accedir als paràmetres en la pantalla de destinació
Per accedir als paràmetres en la pantalla de destinació, utilitzem el hook useRoute
de React Navigation.
import React from 'react'; import { View, Text } from 'react-native'; import { useRoute } from '@react-navigation/native'; const DetailsScreen = () => { const route = useRoute(); const { itemId, otherParam } = route.params; return ( <View> <Text>Item ID: {itemId}</Text> <Text>Other Param: {otherParam}</Text> </View> ); }; export default DetailsScreen;
- Exemple complet
A continuació, es mostra un exemple complet que inclou dues pantalles: HomeScreen
i DetailsScreen
. En aquest exemple, passarem un paràmetre des de HomeScreen
a DetailsScreen
.
HomeScreen.js
import React from 'react'; import { View, Text, Button } from 'react-native'; const HomeScreen = ({ navigation }) => { return ( <View> <Text>Home Screen</Text> <Button title="Go to Details" onPress={() => navigation.navigate('Details', { itemId: 86, otherParam: 'qualsevol valor', })} /> </View> ); }; export default HomeScreen;
DetailsScreen.js
import React from 'react'; import { View, Text } from 'react-native'; import { useRoute } from '@react-navigation/native'; const DetailsScreen = () => { const route = useRoute(); const { itemId, otherParam } = route.params; return ( <View> <Text>Item ID: {itemId}</Text> <Text>Other Param: {otherParam}</Text> </View> ); }; export default DetailsScreen;
- Navegació amb Stack Navigator
Assegura't que tens configurat el Stack Navigator
per a aquestes pantalles.
App.js
import * as React from 'react'; import { NavigationContainer } from '@react-navigation/native'; import { createStackNavigator } from '@react-navigation/stack'; import HomeScreen from './HomeScreen'; import DetailsScreen from './DetailsScreen'; const Stack = createStackNavigator(); const App = () => { return ( <NavigationContainer> <Stack.Navigator initialRouteName="Home"> <Stack.Screen name="Home" component={HomeScreen} /> <Stack.Screen name="Details" component={DetailsScreen} /> </Stack.Navigator> </NavigationContainer> ); }; export default App;
Exercici pràctic
Exercici
- Crea una nova pantalla anomenada
ProfileScreen
. - Des de
HomeScreen
, navega aProfileScreen
passant un paràmetreusername
. - Mostra el valor de
username
aProfileScreen
.
Solució
ProfileScreen.js
import React from 'react'; import { View, Text } from 'react-native'; import { useRoute } from '@react-navigation/native'; const ProfileScreen = () => { const route = useRoute(); const { username } = route.params; return ( <View> <Text>Username: {username}</Text> </View> ); }; export default ProfileScreen;
HomeScreen.js (actualitzat)
import React from 'react'; import { View, Text, Button } from 'react-native'; const HomeScreen = ({ navigation }) => { return ( <View> <Text>Home Screen</Text> <Button title="Go to Profile" onPress={() => navigation.navigate('Profile', { username: 'JohnDoe', })} /> </View> ); }; export default HomeScreen;
App.js (actualitzat)
import * as React from 'react'; import { NavigationContainer } from '@react-navigation/native'; import { createStackNavigator } from '@react-navigation/stack'; import HomeScreen from './HomeScreen'; import DetailsScreen from './DetailsScreen'; import ProfileScreen from './ProfileScreen'; const Stack = createStackNavigator(); const App = () => { return ( <NavigationContainer> <Stack.Navigator initialRouteName="Home"> <Stack.Screen name="Home" component={HomeScreen} /> <Stack.Screen name="Details" component={DetailsScreen} /> <Stack.Screen name="Profile" component={ProfileScreen} /> </Stack.Navigator> </NavigationContainer> ); }; export default App;
Conclusió
En aquest tema, hem après com passar paràmetres entre pantalles utilitzant React Navigation. Hem vist com passar paràmetres amb el mètode navigate
i com accedir-hi en la pantalla de destinació amb el hook useRoute
. També hem practicat aquests conceptes amb un exercici pràctic. Ara estàs preparat per gestionar la navegació amb paràmetres en les teves aplicacions React Native!
Curs de React Native
Mòdul 1: Introducció a React Native
- Què és React Native?
- Configuració de l'entorn de desenvolupament
- Aplicació Hello World
- Comprendre JSX
- Components i Props
Mòdul 2: Components bàsics i estilització
- Visió general dels components bàsics
- Text, View i Image
- Estilització amb Flexbox
- Gestió de l'entrada de l'usuari
- ScrollView i ListView
Mòdul 3: Estat i cicle de vida
- Mètodes d'estat i cicle de vida
- Gestió d'esdeveniments
- Renderització condicional
- Llistes i claus
- Formularis i components controlats
Mòdul 4: Navegació
- Introducció a React Navigation
- Stack Navigator
- Tab Navigator
- Drawer Navigator
- Passar paràmetres a les rutes
Mòdul 5: Xarxes i dades
- Obtenir dades amb Fetch API
- Utilitzar Axios per a sol·licituds HTTP
- Gestió d'errors de xarxa
- AsyncStorage per a dades locals
- Integració amb APIs REST
Mòdul 6: Conceptes avançats
Mòdul 7: Desplegament i publicació
- Construcció per a iOS
- Construcció per a Android
- Publicació a l'App Store
- Publicació a Google Play
- Integració i lliurament continus