我目前正在开发一个 React Native 项目,并面临导航标题的一些挑战。我的目标是创建一个类似于 X 的导航结构。默认情况下,我使用抽屉式导航(以及 BottomBarNavigation),但我还需要一个堆栈导航器来处理打开帖子或个人资料等场景,类似于您在应用程序 X 中看到的情况。我的目标是保留堆栈导航器出现时显示其标题,并在堆栈导航器处于活动状态时隐藏默认抽屉式导航。
我的导航组件:
<Drawer.Navigator>
<Drawer.Screen name={lang.t('Dashboard.Dashboard')} component={BottomTabNavigator}/>
<Drawer.Screen name={lang.t('Settings.Settings')} component={Settings}/>
</Drawer.Navigator>
<BottomTab.Navigator screenOptions={{ headerShown:false }}>
<BottomTab.Screen name={lang.t('Dashboard.BottomBar.Home')} component={HomeScreen}/>
<BottomTab.Screen name={lang.t('Dashboard.BottomBar.Order_list')} component={OrderListScreen}/>
</BottomTab.Navigator>
<Stack.Navigator screenOptions={{ headerShown: false }}>
<Stack.Screen name="List" component={List}></Stack.Screen>
<Stack.Screen name="Create" component={Create}></Stack.Screen>
<Stack.Screen name="Shop List" component={ShopList}></Stack.Screen>
</Stack.Navigator>
到目前为止我尝试的是:
setOption()
函数更改它的选项,但我遇到了无法将对象作为参数传递的问题,至少我得到了警告目前我认为问题出在导航结构上
我花了一天多的时间思考和尝试,但似乎没有任何效果,任何帮助或想法都会有帮助。这是我想要做的一个小但有用的功能,但我无法让它工作,这有点烦人
使用 onStateChange 监听导航状态变化,并更新应用程序状态以隐藏/显示组件。像这样的东西可以工作:
const [showHeader, setShowHeader] = useState(true);
return (
<NavigationContainer
onStateChange={(state) =>
setShowHeader(!['Create'].includes(getCurrentRoute(state).name))
}>
<Drawer.Navigator
screenOptions={{ headerShown: showHeader }}>
...
</Drawer.Navigator>
</NavigationContainer>
);