2017-08-04 11 views
1

私は最初のReact Nativeアプリを構築しようとしていますが、ナビゲーションの問題が残っています。アプリがホーム画面に表示されますので、 私のアプリがスタックナビゲータの3つの画面React NativeアプリのナビゲーションをReact Navigationの現在の画面にリセットするには

Home 
Login 
User (User screen again is a Tab Navigator with three screens UserProfile, UserHome, UserSettings) 

マイナビゲーター

const Navigator = StackNavigator(
    { 
    Home: { 
     screen: HomeScreen 
    }, 
    Login: { 
     screen: LoginScreen, 
    }, 
    User: { 
     screen: UserTabNavigator, 
    } 
    },{ 
    initialRouteName: 'Home' 
    }, 
    { 
    navigationOptions:() => ({ 
     headerTitleStyle: { 
     fontWeight: 'normal', 
     }, 
    }), 
    } 
); 

は、最初のルートはそこからログインをタップし、ホームでいるスクリーン

ログインするのにかかります

ログインコンポーネントでは、認証が成功した後、ユーザー画面にリダイレクトされます。

私はユーザ画面に取得するとき、私は戻るボタンを表示し、それをタップし、画面

ログインするために私に戻って取っているではので、私は、rootとして認証に成功し、設定したユーザー画面上のナビゲーションスタックをリセットしたいです私は今、バックボタンが表示されませんが、ログインした後、私はスワイプの奇妙なアニメーションを見る背中と簡単に私がホーム画面を表示し、[ユーザー画面

にリダイレクトとしてこの作品

const resetAction = NavigationActions.reset({ 
    index: 0, 
    actions: [ 
     NavigationActions.navigate({ routeName: 'User' }) 
    ] 
}); 
this.props.navigation.dispatch(resetAction); 

を追加ログイン機能

私は何をしていますか? 違う?

+0

この参照先https://stackoverflow.com/questions/43090884/リセット - ナビゲーション用スタック - ホームスクリーン - 反応 - ナビゲーション - および - 反応 - n –

答えて

0

通常のナビゲーションを行い、左のヘッダーを無効にする(または必要な場合は変更する)ことができます。gesturesEnabled: false IOSでは、スワイプを経由して戻ることができません...それを行う最善の方法ではありません(あなたのスタックが実際にリセットされてインデックスが乱れる可能性があるので、最悪の場合もありますが)それは最速の解決策だと思います。

関連する問題