Как получить текущий или предыдущий маршрут? - PullRequest
0 голосов
/ 28 июня 2019

У меня есть пользовательский tabBarButtonComponent <AddButton/> внутри навигатора нижней вкладки.Когда пользователь нажмет на эту кнопку, откроется новый экран в зависимости от того, какая вкладка выбрана в данный момент.Поэтому я хочу знать, какой экран в данный момент открыт.

const ContentNavigator = createBottomTabNavigator(
  {
    Photo: {
      screen: Photo,
      navigationOptions: () => ({
        tabBarIcon: ({tintColor}) => (
          <BottomIcon name="photo" color={tintColor}/>
        )
      })
    },
    Audio: {
      screen: Audio,
      navigationOptions: () => ({
        tabBarIcon: ({tintColor}) => (
          <BottomIcon name="audio" color={tintColor}/>
        )
      })
    },
    Adding: {
      screen: () => null,
      navigationOptions: ({navigation}) => ({
        tabBarButtonComponent: () => (
          <AddButton navigation={navigation}/>
        )
      })
    },
    Video: {
      screen: Video,
      navigationOptions: () => ({
        tabBarIcon: ({tintColor}) => (
          <BottomIcon name="video" color={tintColor}/>
        )
      })
    },
    Text: {
      screen: Text,
      navigationOptions: () => ({
        tabBarIcon: ({tintColor}) => (
          <BottomIcon name="text" color={tintColor}/>
        )
      })
    }
  }, {
    headerMode: 'none',
    tabBarOptions: {
      showLabel: false,
      activeTintColor: '#fff',
      inactiveTintColor: '#000',
    }
  }
)

Я пытался передать навигационные реквизиты на <AddButton/>, навигационное имя маршрута выдает «Добавление».Когда пользовательская кнопка нажата, как я могу получить имя текущей вкладки?

Ответы [ 2 ]

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

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

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

Вы можете найти экран, которым вы сейчас заняты

 this.props.navigation.state.params.routeName

У вас будет текущая вкладка, в которой вы находитесь. Если вам нужно получить последний экран, вам нужно будет передать его как параметр в вашем <AddButton\>, например:

<Button onPress={()=>this.props.navigation.navigate('tabName',{lastScreen: this.props.navigation.state.params.routeName})}

И когда вам нужно вернуться назад, это становится:

this.props.navigation.navigate(this.props.navigation.state.params.lastScreen)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...