让堆栈导航器总是呈现initialRoute。

问题描述 投票:0回答:2

我正在构建一个反应式原生应用,我正在使用反应式导航包。我为应用程序设计了一个标签导航器,每个标签都有一个堆栈导航器。就像这样。

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屏幕上。然后我按home标签回到主屏幕。现在,当我回到搜索标签时,它显示我的SearchResult屏幕。有什么方法可以强制 react-navigation 在你从 Tab 进入搜索界面的时候总是显示搜索界面?

我在snack上做了一个项目来说明这个问题。https:/snack.expo.iorkMzWoh17

javascript react-native react-navigation tabnavigator
2个回答
1
投票

在搜索栈导航中使用初始路径名,就像这样。

 {
    initialRouteName: 'Search',
  }

0
投票

你可以在每个堆栈界面里面使用这样的东西。

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

这将在你每次导航离开时把堆栈弹到初始屏幕。

更多信息在这里。https:/reactnavigation.orgdocsnavigation-events

© www.soinside.com 2019 - 2024. All rights reserved.