【发布时间】:2020-03-03 14:58:27
【问题描述】:
我想知道如果 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 中(在代码 sn-p 中)可能应该完成以下操作:
- 从应用 NavigationContainer 获取 navigationRef
- 检查选定的 BottomTab 是否获得焦点(以确定双击)
- e.preventDefault
- reset
SomeStack(不确定如何在 BottomTabNavigator 中获取导航对象的堆栈)
有没有人能够做到这一点? 感谢所有答案:)
【问题讨论】:
标签: react-navigation react-navigation-v5 react-navigation-bottom-tab