Как установить NavigationOptions родительского элемента? - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть вложенный навигатор в моем приложении. Я бы хотел, чтобы моя строка заголовка была установлена ​​в корне навигации, поэтому в моем приложении будет общая панель заголовков для всех экранов.

Мой 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», но не с любого другого экрана, такого как «История».

Как я могу по-прежнему управлять параметрами навигации из другого экрана, например «История», и устанавливать заголовок, если моя панель заголовка навигации находится в самом корневом навигаторе?

Надеюсь, вы понимаете мой вопрос. Очень надеюсь на ваши ответы как можно быстрее. Спасибо, ребята!

1 Ответ

0 голосов
/ 15 ноября 2018

У меня была та же проблема, что я сделал, сделал заголовок пустым в navigationOptions и добавил свой компонент заголовка на экран как обычный компонент и выполнил всю логику, это не лучшая практика, но обходной путь:)

...