2017-10-09 3 views
0

引き出しアイテムのプレスから簡単にログアウトする機能が必要です。そのために私はこれをしています: -DrawerNavigator:画面以外のDrawerItem

これは、ドロワーの項目を追加し、それをクリックすると、スプラッシュ画面に移動します。しかし、この方法では、私はログアウトの全機能を達成することができませんでした。すなわち: -

  1. バックプレスアプリでは引き出しで画面に戻らないように画面スタックを消去します。
  2. ログアウト後、アプリがスプラッシュからログイン画面に移動する必要があります。

私の上記の解決策は、私にこれらのことをさせません。私の要件を達成するためのより良い方法はありますか?

更新

マイナビゲーション構造は、これまでのところ、やや、このようなものです: -

StackNavigator(
    Splash: {screen: SplashScreen}, 
    Login: {screen: LoginScreen}, 
    Home: {screen: HomeScreen}, 
) 

HomeNavigator = DrawerNavigator(
    Logout: {screen: SplashScreen} 
) 

HomeScreen{ 
    render(){ 
     return <HomeNavigator navigation={this.props.navigation} />; 
    } 
} 

私は両方のナビゲーターにSplashScreenを使用しています見ることができます。スタックでは、最初の画面ですが、引き出しにはログアウトに使用されます。しかし、私が引き出しの画面からスプラッシュに移動するとき、私はログインナビゲーションに飛び込むために前に作成したStackNavigatorを失う。あなたはそれを行うためのよりよい方法を私に提案できますか?

答えて

1

あなたはスプラッシュ画面のcomponentWillMount(){}でこの関数を呼び出すことができます。

clearStack = (routeToGo) => { 
    const resetAction = NavigationActions.reset({ 
     index: 0, 
     actions: [ 
      NavigationActions.navigate({ routeName: routeToGo }) 
     ] 
    }) 
    this.props.navigation.dispatch(resetAction) 
} 

を反応させ、ナビゲーションから{NavigationActions}をインポートします。 DrawerNavigatorConfigのcontentComponent小道具を使用してカスタムドロワーナビゲーターを作成することもできます。このナビゲーターでは、navItemsのonPressを変更して、関数を呼び出してスタックをクリアするようにします。

UPDATE:あなたのスプラッシュ画面上

componentWillMount(){ 
    this.clearStack('Login') 
} 
+0

オーマイ悪いです。あなたの答えを見ることで、私はこれが既に処理されていることに気付きました。あなたは私の質問の半分に答えました。スプラッシュからログインするにはどうすればいいですか?私は私の質問を私の後半のためのより多くの情報で更新します。 –

+0

私の編集の更新を確認してください –

+0

更新された質問をご覧ください。 –

関連する問題