2017-09-21 3 views
1

Ich habe einige Bildschirme, die ich nacheinander durch navigieren. Screen1-> screen2-screen3-> screen4-HomeReagiere nativen Löschen Stack Navigator Stack

Was ich will ist, wenn ich nach Hause gehe, dann sollte die vorherige Geschichte der Navigation gelöscht werden und zurück Drücken der Zurück-Taste sollte nicht zum letzten navigierten Bildschirm gehen, der Bildschirm 4 ist. Momentan Wenn ich auf dem Startbildschirm die Zurück-Taste drücke, bringt es mich zurück zur letzten Route im Stapel, der Screen4 ist. Ich habe den folgenden Code verwendet. Es gibt mir einen Fehler, keine Route definiert oder Schlüssel zu Hause. Was ich bereits in der Klasse Screens definiert habe. Jede Hilfe wäre willkommen.

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

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

Antwort

2

Wie es in der react-navigation docs for reset action heißt es, Index der aktuellen aktiven Route Index sein sollte. Der Fehler könnte damit zusammenhängen.

Wie der Indexparameter

Der Index param verwendet verwenden, wird die aktuelle aktive Route angeben. zB: bei einer einfachen Stacknavigation mit zwei Routen Profil und Einstellungen. Um den Zustand zu einem Punkt zurückzusetzen, wo der aktiven Bildschirmeinstellungen war aber haben sie auf einem Profil Bildschirm gestapelt, würden Sie wie folgt vorgehen:

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) 
+0

Wie bekomme ich den aktuellen Index? –

+0

@ParasWatts Sie können die Funktion [Screen Tracking] (https://reactnavigation.org/docs/guides/screen-tracking#Screen-tracking) verwenden, um den aktuellen Status und den Index der Route abzurufen. – bennygenel

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

Sie diese verwenden können, diese funktioniert für mich ..

Verwandte Themen