J'essaie d'obtenir le nom de l'itinéraire précédent sur mon écran actuel. Parce que sur la base du nom d'écran précédent, je dois afficher/masquer quelques objets dans l'écran actuel.
Pour obtenir le nom d'écran précédent, j'ai essayé de suivre
componentDidMount() {
const { navigation } = this.props;
if (navigation.state.params && navigation.state.params.previous_screen) {
console.log('navigation.state.params.previous_screen', navigation.state.params.previous_screen);
}
}
Mais, cela devient undefined
dans le journal de la console.
Aucune suggestion?
Vous devez utiliser NavigationActions
goToScreen = () => {
const navigateAction = NavigationActions.navigate({
routeName: 'Profile',
params: { previous_screen: 'Home' }, // current screen
action: NavigationActions.navigate({ routeName: 'Profile' }), // screen you want to navigate to
});
this.props.navigation.dispatch(navigateAction);
};
appelez la fonction ci-dessus dans votre onPress
<Text onPress={this.goToScreen}>Go to screen</Text>
Dans votre autre écran
componentDidMount = () => {
const { navigation } = this.props;
if (navigation.state.params && navigation.state.params.previous_screen) {
this.setState({
previous_screen: navigation.state.params.previous_screen
});
} else {
console.log("ERROR");
}
};
const navigateAction = NavigationActions.navigate({
routeName: 'Profile',
action: NavigationActions.navigate({ routeName: 'Profile', params: { previous_screen: 'Home' } }),
});
this.props.navigation.dispatch(navigateAction);