我想知道如果 Tab 被聚焦并按下,如何重置 BottomTabNavigator 内的堆栈。
这是我到目前为止的代码:
const Stack = createStackNavigator<MainStackParams>()
const BottomTab = createBottomTabNavigator<TabNavigatorParams>()
const navigationRef = React.useRef()
> Blockquote
<NavigationContainer ref={navigationRef}>
<Stack.Navigator mode="modal">
<Stack.Screen
name={MainAppRoute.BOTTOM_TAB_NAVIGATOR}
component={BottomTabNavigator}
/>
...
</Stack.Navigator>
</NavigationContainer>
function BottomTabNavigator() {
return (
<BottomTab.Navigator>
<BottomTab.Screen
name={TabNavigatorRoute.SOME_STACK}
component={SomeStack}
listeners={{tabPress: e => {
// TODO: Reset stack in current tab (unsure how to do this)
}}}
/>
...
</BottomTab.Navigator>
)
}
在 TODO 中(在代码片段中)可能应该完成以下操作:
- 从应用 NavigationContainer 获取 navigationRef
- 检查选定的 BottomTab 是否聚焦(以确定双击)
- e.preventDefault
- 重置
SomeStack
(不确定如何在 BottomTabNavigator 中获取导航对象的堆栈)
有没有人能够做到这一点?感谢所有答案:)