Получение текущего routeName в реагирующей навигации - PullRequest
0 голосов
/ 03 июля 2019

Я хочу получить имя текущего routeName в реагирующем навигаторе.Я столкнулся с тремя решениями:

 1. const { routeName } = navigation.state.routes[navigation.state.index];

 2. this.props.navigation.state.RouteName

 3. const route = navigationState.routes[navigationState.index];

Первое, кажется, работает нормально.Что касается второго, я не уверен, как его использовать.Третий вариант (как указано в официальной документации) генерирует ошибку с ReferenceError: navigationState is undefined.

. Помогите, пожалуйста, узнать, как правильно найти имя активного экрана во время навигации.

1 Ответ

2 голосов
/ 03 июля 2019
function getActiveRouteName(navigationState) {
  if (!navigationState) {
    return null
  }
  const route = navigationState.routes[navigationState.index]
  if (route.routes) {
    return getActiveRouteName(route)
  }
  return route.routeName
}

// Example Usage
const currentScreen = getActiveRouteName(this.props.router);
if (currentScreen === 'Login') {
   // do something
}
...