我在我的应用程序中嵌套了导航器。我希望我的标题栏被设置在导航的根上,这样我的应用程序中的所有屏幕都会有一个共同的标题栏。
我的index.js是:
const StackOpportunityNavigator = createStackNavigator(
{
MainOpportunity: OpportunityScreen,
ClientScreen: ClientScreen,
BusinessMapLocation: BusinessMapLocation,
LoginScreen: LoginScreen
},
{
initialRouteName: 'MainOpportunity',
headerMode: 'none',
transitionConfig: () => fromLeft(600),
}
);
const DrawerNavigationOptions = createDrawerNavigator(
{
OpportunityStack: { screen: StackOpportunityNavigator },
History: HistoryScreen,
MyChances: MyChancesScreen,
Info: InfoScreen
},
{
contentComponent: (props) => <SideBar {...props} />,
drawerPosition: 'right',
transitionConfig: () => fromLeft(600),
}
);
const LoginNavigator = createStackNavigator(
{
LoadingScreen: LoadingScreen,
LoginScreen: LoginScreen,
DrawerNavigator: DrawerNavigationOptions
},
{
transitionConfig: () => fromLeft(600),
headerMode: 'screen',
navigationOptions: {
headerStyle: {
backgroundColor: Colors.primary
},
headerTintColor: '#fff',
headerTitleStyle: {
fontWeight: 'normal',
fontSize: 18
}
}
}
);
export default LoginNavigator;在我的应用程序的每个屏幕中,我都有这样的代码:
static navigationOptions = {
header: <HeaderBar title={'currentScreenTitle'} />
};然而,它在“LoginScreen”屏幕和“LoginNavigator”中的所有其他屏幕上都可以工作,但不能从“历史记录”这样的任何其他屏幕上工作。
如果我的导航标题栏在大多数根导航器中,我如何仍然控制其他屏幕上的导航选项,如“历史记录”和设置标题?
希望你能理解我的问题。真心希望能尽快为您解答。谢谢你们!
发布于 2019-11-06 02:06:52
据我所知,无法从嵌套屏幕中访问父导航器。
这不是很方便,但我认为创建自己的组件是实现这一点的唯一方法。不过,有一个有用的库可以让您更轻松地创建header组件。React Native Elements
发布于 2018-11-16 00:14:51
我一直有同样的问题,我所做的是在navigationOptions中将header设为空,并在screen中添加我的header组件作为常规组件,并执行所有的逻辑,这不是最佳实践,而是一种变通方法:)
https://stackoverflow.com/questions/53322839
复制相似问题