首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设置父级的NavigationOptions?

如何设置父级的NavigationOptions?
EN

Stack Overflow用户
提问于 2018-11-15 23:35:03
回答 2查看 533关注 0票数 2

我在我的应用程序中嵌套了导航器。我希望我的标题栏被设置在导航的根上,这样我的应用程序中的所有屏幕都会有一个共同的标题栏。

我的index.js是:

代码语言:javascript
运行
复制
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;

在我的应用程序的每个屏幕中,我都有这样的代码:

代码语言:javascript
运行
复制
static navigationOptions = {
      header: <HeaderBar title={'currentScreenTitle'} />
  };

然而,它在“LoginScreen”屏幕和“LoginNavigator”中的所有其他屏幕上都可以工作,但不能从“历史记录”这样的任何其他屏幕上工作。

如果我的导航标题栏在大多数根导航器中,我如何仍然控制其他屏幕上的导航选项,如“历史记录”和设置标题?

希望你能理解我的问题。真心希望能尽快为您解答。谢谢你们!

EN

回答 2

Stack Overflow用户

发布于 2019-11-06 02:06:52

据我所知,无法从嵌套屏幕中访问父导航器。

文档中写道:“You can only modify navigation options for a navigator from one of its screen components. This applies equally to navigators that are nested as screens。”

这不是很方便,但我认为创建自己的组件是实现这一点的唯一方法。不过,有一个有用的库可以让您更轻松地创建header组件。React Native Elements

票数 1
EN

Stack Overflow用户

发布于 2018-11-16 00:14:51

我一直有同样的问题,我所做的是在navigationOptions中将header设为空,并在screen中添加我的header组件作为常规组件,并执行所有的逻辑,这不是最佳实践,而是一种变通方法:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53322839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档