2017-10-25 1 views
0

私は反応ナビゲーションを使用しており、別々のファイルに2つの異なるスタックルータを持っていますAuthedRouterおよびNonAuthedRouter彼らはそれぞれ重複しない無関係な画面を持っています。ユーザーならばNonAuthedRouterを私App.jsで反応ナビを使用して、別のスタックナビゲータにジャンプして前のものを閉じるにはどうすればいいですか?

const NonAuthedRouter = StackNavigator({ 
    Signup: { screen : Signup } 
    SignupTwo : { screen : SignupTwo } 
}) 

私は、ユーザーのアプリの状態を確認し、私renderメソッドの戻り値に:

const AuthedRouter = StackNavigator({ 
    Home : { screen: Home } 
}) 

NonAuthedRouter.js次のようになります。

AuthedRouterは次のようになりますサインアップする必要があります。私の問題は、AuthedRouterでホーム画面に移動するにはどうしたらいいですか?また、私はそれが正しくないことを確認したい、そしてNonAuthedRouterのスクリーンはメモリ/ etcから100%削除されています。

ありがとうございました。

+0

https://reacttraining.com/react-router/native/guides/philosophyをリセットする方法 – challenger

答えて

0

2つのStackNavigatorを持つ代わりに、ただ1つのStackNavigatorを使用して同じことを実行できます。

const MainRouter = StackNavigator({ 
    Signup: { screen : Signup }, 
    SignupTwo : { screen : SignupTwo }, 
    Home : { screen: Home } 
}) 

ユーザーがすでにサインアップしている場合、ホーム画面に移動するだけで、スタックに画面がないため、ユーザーはホーム画面から戻ることができません。

新しいユーザーがサインアップ画面に移動すると、サインアップ画面に移動してサインアップすると、スタックをリセットしてホーム画面に移動するだけです。リセットするとスタック画面がクリアされます。詳細については反応し、ナビゲーションをドキュメントに

を読むStackNavigator

this.props.navigation.dispatch(NavigationActions.reset({ 
    index: 0, 
    actions: [ 
    NavigationActions.navigate({ routeName: 'Home'}) 
    ] 
})); 
関連する問題