Навигация по реакции - доступ к tabBarOnPress для createBottomTabNavigator с вложенным createStackNavigator - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть

screen: createBottomTabNavigator(
        {
          firstTab: {
            screen: createStackNavigator({
              firstStack: {
                screen: firstStackScreen
              },
              SecondStack: {
                screen: SecondStackScreen
                }
              }
            }),
          secondTab: {
            screen: SecondTabScreen,
          }

Внутри первого экрана, я хочу получить доступ к функции tabBarOnPress.У меня нет проблем с доступом к функции tabBarOnpress на экране secondTab, но я не могу на экране firstStackScreen.Есть ли способ сделать это?

class firstStackScreen extends Component {
  static navigationOptions = ({ navigation }) => {
    return {
      tabBarOnPress({ navigation, defaultHandler }) {
        ....
      }
    };
  };
}

Я знаю, что могу иметь доступ к нему на экране своего приложения, где я определяю эти вкладки и стеки, но для того, чтобы мой код работал, мне нужно сделать это внутри файла firstStackScreen.js.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Как я понимаю, вы хотите получить доступ к navigationOptions родительского элемента во вложенном stackNavigation, который не будет работать, как они объяснили в документации v3.x

Вместо этого они упоминают в аналогичном примереКак ты можешь этого достичь?

это выглядит примерно так

const TabNavigator = createBottomTabNavigator({
    Feed: FeedScreen,
    Profile: ProfileScreen,
});

TabNavigator.navigationOptions = ({ navigation }) => {
    const { routeName } = navigation.state.routes[navigation.state.index];

     // You can do whatever you like here to pick the title based on the route name
    const headerTitle = routeName;

    return {
       headerTitle,
    };
};

const AppNavigator = createStackNavigator({
    Home: TabNavigator,
    Settings: SettingsScreen,
});
0 голосов
/ 26 декабря 2018

Здесь вы также можете получить доступ к закладкам навигации для каждого экрана, это то, что вы хотите?Это должно работать в реакции-навигации версии 1,2. *, Я не уверен насчет 3.

screen: createBottomTabNavigator(
    {
      firstTab: {
        screen: createStackNavigator({
          firstStack: {
            screen: firstStackScreen
          },
          SecondStack: {
            screen: SecondStackScreen
            }
          }
        }),
        navigationOptions: ({ navigation, screenProps }) => {}
      }
      secondTab: {
        screen: SecondTabScreen,
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...