Как отправить реквизит на пользовательский TabBar? - PullRequest
0 голосов
/ 12 июня 2019

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

Мой вопрос: как отправить состояние компонента на панель вкладок?

Вот мой навигатор

export default (LoggedInTabNavigator = createBottomTabNavigator(
  {
    Explore: {
      screen: Explore,
      navigationOptions: {
        tabBarIcon: CustomTabBarIcon("layers", 32)
      }
    },
    SavedTab: {
      screen: SavedTab,
      navigationOptions: {
        tabBarIcon: CustomTabBarIcon("heart", 32)
      }
    },
    AddPost: {
      screen: AddPost,
      navigationOptions: {
        tabBarIcon: CustomTabBarIcon("plus", 32)
      }
    },
    Chat: {
      screen: Chat,
      navigationOptions: {
        tabBarIcon: CustomTabBarIcon("email", 32)
      }
    },
    More: {
      screen: More,
      navigationOptions: {
        tabBarIcon: CustomTabBarIcon("dots-horizontal", 32)
      }
    }
  },
  {
    tabBarComponent: props => <BottomTabBar {...props} />
  },
  {
    tabBarOptions: {
      labelStyle: {
        marginBottom: 5
      },
      activeTintColor: colors.white,
      showLabel: false,
      style: {
        backgroundColor: colors.dark
      }
    },
    tabBarPosition: "bottom"
  }
));

Теперь я хотел бы отправить состояние компонента isVisible на tabBarComponent что-то вроде

onPress={() =>
   this.setState({
      isVisible: true
   })
}

Я знаю, что могу отправлять реквизиты на экран как this.props.navigation.navigate('Screen', {isVisible}), но это работает, только если я перехожу на другую страницу

1 Ответ

0 голосов
/ 12 июня 2019

как насчет использования ScreenProps?

import LoggedInTabNavigator from './LoggedInTabNavigator';

<LoggedInTabNavigator screenProps={{ isVisible: this.state.isVisible}} />

Вы можете получить к нему доступ с

this.props.screenProps.isVisible
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...