React导航5
我已经在TabNavigator中构建了StackNavigator,主屏幕和其他屏幕之间的导航正常工作,但问题是,当我从Tab2移动到Tab1时,我希望Tab1总是显示StackNavigator的第一个屏幕。
tab1
-> Stack
-screen1
-screen2
tab2
我在screen2上,然后移到tab2,然后移回Tab1,我希望始终显示screen1。
"我在尝试使用"
OnTabPress({navigation})=>{
navigation.navigate("stackName",{
screen: "screen1"
}).
}
它的工作,但它显示我screen2第一,然后导航到screen1。有任何其他的解决方案。https://snack.expo.io/@usamasomy/groaning-donut
6条答案
按热度按时间vkc1a9a21#
使用模糊时卸载:在选项中为true。
因此,当您导航离开此选项卡并位于Stack1的屏幕2时,返回此选项卡时,您将始终显示此stackNavigator的第一个屏幕。
fgw7neuy2#
initialRouteName= "NAME"
是关键字,用于确保您有默认值,并确保相应地使用navigate()
push()
pop()
。首先,创建一个自定义TabBar,这样我们就可以编写由
onPress
执行的函数然后在
TabScreens
中使用tabBar=...
覆盖Tab.Navigator
中的原始TabBar
,然后每次按MyTabBar
时使用index:0
和routes:{{name: 'Screen1'}}
调用navigation.reset()
。这可以大大改善,例如:
最后小吃可在这里:https://snack.expo.io/@karammarrie/customtabbar
5vf7fwbs3#
我有一个简单的解决方案,就是在中设置initialRouteName=“screen1
如果屏幕仍然显示第一个屏幕2,您只需要注解行
<Stack.Screen name="screen2" component={Screen2} />
并重新加载屏幕,然后删除注解行。dxpyg8gm4#
没有关于它的文档,但下面的代码对我很有效:
当按下“屏幕1选项卡”时,上面的代码始终导航到“屏幕1子1”。
o2gm4chl5#
像这样
电子
pcrecxhr6#
另一种选择是在导航之前清除导航堆栈,这样当您返回到该屏幕时,导航将从顶部开始