21

1つずつナビゲートする画面はほとんどありません。Screen1->screen2-screen3->screen4-ホーム

私が欲しいのは、家に帰ったときに以前のナビゲーション履歴をクリアし、戻るボタンを押して最後にナビゲートした画面4に移動しないようにすることです。現在、ホーム画面で戻るボタンを押すと、 screen4 であるスタックの最後のルート。以下のコードを使用しました。ルートが定義されていないか、ホームのキーがありませんというエラーが表示されます。Screens クラスで既に定義したもの。どんな助けでも大歓迎です。

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

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

6 に答える 6

9

reset action の react-navigation ドキュメントに記載されているように、 index は現在アクティブなルートのインデックスである必要があります。エラーはそれに関連している可能性があります。

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)
于 2017-09-21T09:54:02.610 に答える
0

//輸入

import { NavigationActions, StackActions } from 'react-navigation';

// 現在のナビゲーション スタックをリセットし、新しいナビゲーション スタックを作成します

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

// 新しいナビゲーション スタックで新しいコンポーネントを開く

this.props.navigation.dispatch(loginScreenAction)
于 2020-09-01T12:57:30.080 に答える