2017-06-29 3 views
2

私はしばらくこの点を確認していましたが、多くのドキュメントがあり、同時に何もありません。 反応ナビゲーションからリセットメソッドを呼び出す際に問題があります。私はオプションは、いくつかのオプションを1つだけのページで、あなたがリダイレクトされている一度ダッシュボードには、メインページで、以下のStackNavigatorリアナビゲーションの説明

const Routes = StackNavigator({ 
    Home: { screen: CheckLogin(App), navigationOptions: { header: null } }, 
    Options: { screen: Options, navigationOptions: { title: 'Settings' } }, 
    Dashboard: { screen: Dashboard }, 
}); 

だから家にはログインようなことができています。 ポイントは、ホームでは、以前のアクセストークンが保存されているかどうかをチェックしているため、ダッシュボード画面に直接移動します。私の問題は、矢印が戻ってくるように見えることです。私はそれが欲しいとは思わないので、適切な方法でルートをリセットすることができます。私のダッシュボードコンポーネントで

、私はcomponentDidMount(それ以外の場合を置くことを確認しない)の内側に次のコードを入れている:

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

     this.props.navigation.dispatch(resetAction); 

をだから私は理解何:アクションはあなたが利用可能だルートです移動するには、インデックスは、あなたがアクション配列の位置の内側に行きたいものです。したがって、私のアクション配列からの位置1はDashboardコンポーネントです。この部分はドキュメントから少し混乱していましたので、わかりません。

このコードは機能しません。ホームページとDashboardの間でアプリに無限ループを作成します。

ダッシュボードコンポーネントにアクセスしたときに、後ろの矢印を削除して別の全く別のリンクに置き換える方法はありますか?解決策がリセットの場合。ここに何が間違っているのか、それが本当にどのように働いているのかを私に説明できますか?

本当に助けていただきありがとうございます。私が何をしたいことは、ユーザーがログインしていると判断したら、あなたのホーム画面からこれを呼び出すことだと思います。

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

    this.props.navigation.dispatch(resetAction); 

このNavigationActions.reset()関数が何をしているか

答えて

0

は、アクションを実行しています( 'index'キーからの)指定されたインデックスのナビゲーション履歴に結果の状態をスプライスし、ナビゲーション履歴内のすべての後続項目を取り除くことができます。

利用可能なルートは、この引数の 'actions'キーではなく、ナビゲータに提供された引数で指定します。