Пусть навигатор стека всегда отображает initialRoute

Я создаю собственное приложение для реагирования и использую пакет реагирования на навигацию. У меня есть навигатор вкладок для приложения, и на каждой вкладке есть навигатор стека. Что-то вроде этого:

const HomeStack = StackNavigation({
    Info: {screen: Info},
    Main: {screen: Main}
})

const SearchStack = StackNavigation({
    Search: {screen: Search},
    SearchResult: {screen: SearchResult}
})

TabNavigation({
  Home: {screen: HomeStack},
  Search: {screen: SearchStack}
})

Итак, допустим, я выполнил поиск, и теперь я нахожусь на экране SearchResult. Затем я возвращаюсь на главный экран, нажимая вкладку «Домой». Теперь, когда я возвращаюсь на вкладку поиска, он показывает мне экран SearchResult. Есть ли способ заставить реагирующую навигацию всегда отображать экран поиска, когда вы переходите на него с вкладки?

Я сделал проект о закусках, чтобы проиллюстрировать это https://snack.expo.io/rkMzWoh17


person Roman Levytskyy    schedule 30.05.2018    source источник


Ответы (2)


используйте начальное имя маршрута, подобное этому, в навигации по стеку поиска, подобное этому

 {
    initialRouteName: 'Search',
  }
person Nahid Hasan    schedule 30.05.2018
comment
У меня есть это в моем коде, но оно работает только при начальном рендеринге. Как только я перемещаюсь по стеку, он сохраняет этот экран в истории и отображает его, когда я перехожу на вкладку. - person Roman Levytskyy; 31.05.2018
comment
возможно, откройте все экраны в SearchStack, а затем перейдите на главный экран. Поэтому, когда вы вернетесь к стеку, он запустится на начальном экране. - person skrusetvt; 31.05.2018

Вы можете использовать что-то подобное внутри каждого экрана стека.

   const Search = ({ navigation }) => {
      useLayoutEffect(() => {
          const blur = navigation.addListener('blur', () => {
            navigation.popToTop();
          });
      }, []);
   }

Это выталкивает стек на начальный экран каждый раз, когда вы уходите.

Дополнительная информация здесь: https://reactnavigation.org/docs/navigation-events

person anfo000    schedule 04.06.2020