2017-06-20 10 views
6

ナビゲーションナビゲーションライブラリのDrawerNavigatorに基づいてナビゲーションを行うアプリケーションを構築しています。DrawerNavigatiorにネストされたStackNavigatorの状態をリセットするにはどうすればよいですか?

  • 2つの正規のタブStackNavigator項目に対するユーザーの検索をすることができます一つの画面で構成されてい

を "検索" という名前

  • 1 StackNavigator、および:

    このナビゲーターは、3つのタブがありますユーザが検索結果を見る第2画面。

    検索結果ページをDrawerNavigatorのタブにしたくないので、この構造を実装しました。

    問題は、ユーザーが既に検索を行った場合、「検索」タブをクリックすると、彼は検索画面に戻るのではなく、検索結果画面に戻ります。ユーザーが検索画面に戻ってくることをお勧めします。

    どうすれば実現できますか?

  • 答えて

    1

    あなたはこれを追加イベントにここにあなたのボタンまたは任意の要素でnavigationActions

    import { NavigationActions } from 'react-navigation'; 
    
    const resetAction = NavigationActions.reset({ 
        index: 0, 
        actions: [ 
        NavigationActions.navigate({ 
         routeName: 'DrawerScreen', 
         params: {}, 
         action: NavigationActions.navigate({ routeName: 'SearchScreen' }), 
        }), 
        ], 
    }) 
    navigation.dispatch(resetAction) 
    
    +0

    このため、私はDrawerNavigatorのSearchタブでclickイベントを捕捉する必要があります。私はこのイベントをどのように捉えることができるか知っていますか? – Arnaud

    +0

    このリンクをご覧ください https://stackoverflow.com/questions/44801667/navigate-to-root-screen-from-nested-stack-navigator?noredirect=1#comment76584210_44801667 – Siddharth

    0
    import { NavigationActions } from 'react-navigation'; 
    
    const resetAction = NavigationActions.reset({ 
        index: 0, 
        actions: [ 
         NavigationActions.navigate({ routeName: 'SearchScreen'}) 
        ] 
    }) 
    

    と、この使用してナビゲーション派遣をachiveことができます。 this.props.navigation.dispatch(resetAction)

    <Button 
        onPress= { 
         () => this.props.navigation.dispatch(resetAction) 
        } 
        title='Back to Search' 
    /> 
    
    関連する問題