web-dev-qa-db-fra.com

Comment obtenir le nom de l'itinéraire précédent depuis React Navigation

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");
  }
};

Démo de travail

1
Junius L.
const navigateAction = NavigationActions.navigate({
  routeName: 'Profile',
  action: NavigationActions.navigate({ routeName: 'Profile', params: { previous_screen: 'Home' } }),
});
this.props.navigation.dispatch(navigateAction);
0
Esha Singh