2017-06-20 35 views
6

Buduję aplikację, której nawigacja oparta jest na DrawerNavigator z biblioteki reaktywnej nawigacji.Jak zresetować stan StackNavigator zagnieżdżony w DrawerNavigatior?

Ten nawigator ma 3 zakładki:

  • 2 regularne występy
  • 1 StackNavigator nazwie "Szukaj"

StackNavigator składa się z jednego ekranu, która umożliwia wyszukiwanie użytkownika dla elementu, a drugi ekran, na którym użytkownik widzi wyniki wyszukiwania.

Nie chcę, aby strona z wynikami wyszukiwania była zakładką DrawerNavigator, dlatego zaimplementowałem tę strukturę.

Problem polega na tym, że jeśli użytkownik przeszukał już konto, po kliknięciu karty "Szukaj" nie wraca do ekranu wyszukiwania, ale do ekranu wyników wyszukiwania. Wolałbym, aby użytkownik wrócił do ekranu wyszukiwania.

Jak mogę to osiągnąć?

Odpowiedz

1

Można achive to przy użyciu wysyłkę nawigacji z 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

Do tego potrzebuję przechwycić zdarzenie click na karcie Wyszukaj w DrawerNavigator. Czy wiesz, jak mogę złapać to wydarzenie? – Arnaud

+0

Proszę spojrzeć na ten link 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'}) 
    ] 
}) 

Tutaj w przycisk lub dowolny element z imprezy dodać to: this.props.navigation.dispatch (resetAction)

<Button 
    onPress= { 
     () => this.props.navigation.dispatch(resetAction) 
    } 
    title='Back to Search' 
/>