react-native - 在选项卡开关上打开选项卡导航器内的堆栈导航器的初始屏幕,而不是上次访问的屏幕
问题描述
Tab.Navigator
Tab1-Stack.Navigator (SettingStack)
-SettingsScreen
-ProfileScreen
Tab2-Stack.Navigator (HomeStack)
-HomeScreen
-DetailsScreen
我们从 HomeScreen 开始并导航到 DetailsScreen。然后我们使用标签栏切换到 SettingsScreen 并导航到 ProfileScreen。在这个序列之后如果你使用标签栏切换回 HomeStack,它会打开 DetailsScreen - HomeStack 的导航状态已被保留
但是我想如果用户切换选项卡,那么堆栈的初始屏幕应该打开而不是最后打开的屏幕,如何实现呢?
function App() {
return (
<NavigationContainer>
<Tab.Navigator>
<Tab.Screen name="First">
{() => (
<SettingsStack.Navigator>
<SettingsStack.Screen
name="Settings"
component={SettingsScreen}
/>
<SettingsStack.Screen name="Profile" component={ProfileScreen} />
</SettingsStack.Navigator>
)}
</Tab.Screen>
<Tab.Screen name="Second">
{() => (
<HomeStack.Navigator>
<HomeStack.Screen name="Home" component={HomeScreen} />
<HomeStack.Screen name="Details" component={DetailsScreen} />
</HomeStack.Navigator>
)}
</Tab.Screen>
</Tab.Navigator>
</NavigationContainer>
);
}
解决方案
您应该为屏幕名称“第二”实现选项卡项触摸,并将导航弹出到根视图。
推荐阅读
- java - 如何在 Maven 项目中正确导入 org.w3c.dom?
- angular - 如何在 Angular 5 中验证表单数组中的电子邮件或电话字段?
- jmeter - 如何从响应数据中获取 href URL 中的特定属性值
- visual-studio-2010 - 删除逗号或将逗号更改为空格 SSIS 2010
- c - 没有定义的静态函数声明
- debugging - VS Code – 通过键盘跳转到当前调试位置
- batch-file - 如何删除批处理文件中新生成的文件
- ios - CKError.Code.networkFailure 什么时候会发生?如何解决?
- c++ - 如何调用结构数组来运行?
- cryptography - 混合 Lopez Dahab 仿射坐标中的椭圆曲线点相加算法