web-dev-qa-db-fra.com

React pile native native Stack Navigator

J'ai peu d'écrans que je parcours un par un. Screen1-> screen2-screen3-> screen4-Home

Ce que je veux, c'est quand je rentre à la maison, puis l'historique de navigation précédent doit être effacé et le retour en appuyant sur le bouton de retour ne doit pas aller au dernier écran de navigation qui est l'écran 4. Actuellement, lorsque j'appuie sur le bouton de retour sur l'écran d'accueil, cela me ramène à la dernière route de la pile qui est screen4. J'ai utilisé le code ci-dessous. Cela me donne une erreur sans route définie ou clé Accueil. Ce que j'ai déjà défini dans la classe Screens. Toute aide serait appréciée.

const resetAction = NavigationActions.reset({
  index: 0,                       
  actions: [NavigationActions.navigate({ routeName: 'Home' })],
});

onPress={() =>  this.props.navigation.dispatch(resetAction)}
6
Paras Watts

La réponse est createSwitchNavigator , cela n'empile pas votre navigation. Ajoutez votre écran d'authentification/navigateur dans un createSwitchNavigator avec l'écran d'accueil/la pile.

Avec cela, lorsque vous naviguez de chez vous pour vous connecter, les piles ne sont pas conservées.

Pour en savoir plus https://reactnavigation.org/docs/en/auth-flow.html

4
Nelson Bass
import {NavigationActions} from 'react-navigation';                
const resetAction = NavigationActions.reset({
    index: 0,
    actions: [
      NavigationActions.navigate({ routeName: 'HomeScreen'})
    ] })
this.props.navigation.dispatch(resetAction);

vous pouvez l'utiliser, cela fonctionne pour moi ..

3
fazeel zama

Comme il l'indique dans React-Navigation Docs for Reset Action , index doit être l'index de l'itinéraire actif actuel. L'erreur pourrait être liée à cela.

Comment utiliser le paramètre d'index

Le paramètre d'index est utilisé pour spécifier l'itinéraire actif actuel. par exemple: étant donné une navigation de base de la pile avec deux profils et paramètres d'itinéraires. Pour réinitialiser l'état à un point où l'écran actif était Paramètres mais qu'il soit empilé au-dessus d'un écran de profil, vous procéderiez comme suit:

import { NavigationActions } from 'react-navigation'

const resetAction = NavigationActions.reset({
  index: 1,
  actions: [
    NavigationActions.navigate({ routeName: 'Profile'}),
    NavigationActions.navigate({ routeName: 'Settings'})
  ]
})
this.props.navigation.dispatch(resetAction)
3
bennygenel