1つずつ移動する画面がいくつかあります。 Screen1-> screen2-screen3-> screen4-Home
私が欲しいのは、家に帰ったときに以前のナビゲーション履歴をクリアし、戻るボタンを押して最後にナビゲートした画面4に移動しないようにすることです。現在、ホーム画面で戻るボタンを押すと、スタックの最後のルートであるscreen4。以下のコードを使用しました。ルートが定義されていないか、キーホームがエラーです。これはScreensクラスですでに定義しています。任意の助けいただければ幸いです。
const resetAction = NavigationActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: 'Home' })],
});
onPress={() => this.props.navigation.dispatch(resetAction)}
答えはcreateSwitchNavigatorであり、ナビゲーションを積み上げません。認証画面/ナビゲーターをホーム画面/スタックのあるcreateSwitchNavigatorに追加します。
そのため、ホームからナビゲートしてログインすると、スタックは保持されません。
import {NavigationActions} from 'react-navigation';
const resetAction = NavigationActions.reset({
index: 0,
actions: [
NavigationActions.navigate({ routeName: 'HomeScreen'})
] })
this.props.navigation.dispatch(resetAction);
あなたはこれを使うことができます、これは私のために働きます。
reset-navigation docs for reset action に記載されているように、indexは現在アクティブなルートのインデックスである必要があります。エラーはそれに関連している可能性があります。
インデックスパラメータの使用方法
Indexパラメータは、現在アクティブなルートを指定するために使用されます。例:プロファイルと設定の2つのルートを持つ基本的なスタックナビゲーションが指定されています。アクティブな画面が[設定]である点に状態をリセットしますが、プロファイル画面の上に重ねるには、次のようにします。
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)