How to Pass Parameters to screen in StackNavigator?
In react hooks, params send in navigation using useNavigation
import { useNavigation } from '@react-navigation/native';
const navigation = useNavigation();
<Button
title="Back"
onPress={() => {
navigation.navigate('MyScreen',{name:'test'});
}}
/>
then access them using useNavigationParam
function MyScreen() {
const name = useNavigationParam('name');
return <p>name is {name}</p>;
}
See this .
It solved my problem.
this.props.navigation.navigate("**stack_Name**", {
screen:"screen_name_connect_with_**stack_name**",
params:{
user:"anything_string_or_object"
}
})
In your first page, say CountriesList
const CountriesList = ({ navigation }) => {
/* Function to navigate to 2nd screen */
const viewCountry = (country) => {
navigation.navigate('ListItemPageRoute', { name: country.country_name });
};
}
For your second page name, say ListItemPageRoute
const ListItemPageRoute = (props) => {
return (
<View style={styles.container}>
<Text style={styles.countryText}> { props.route.params.name } </Text>
</View>
);
};
'Props.route' Object will have the list of all parameters you would like to pass from one screen to another.
You can pass params with the navigate
function's second argument:
onPress(user) {
this.props.navigation.navigate(
'DetailPage',
{ user },
);
}
React Navigation 5.x, 6.x (2022)
Access them in this.props.route.params
. For example in your DetailsPage
:
<Text style={styles.myStyle}>{this.props.route.params.user.name}</Text>
https://reactnavigation.org/docs/params/
React Navigation <= 4.x
Access them in this.props.navigation.state.params
. For example in your DetailsPage
:
<Text style={styles.myStyle}>{this.props.navigation.state.params.user.name}</Text>
https://reactnavigation.org/docs/4.x/params/