React native 在react导航中获取当前routeName

React native 在react导航中获取当前routeName,react-native,routes,navigation,state,React Native,Routes,Navigation,State,我想在react navigator中获取当前routeName的名称。我遇到了三种解决方案: 1. const { routeName } = navigation.state.routes[navigation.state.index]; 2. this.props.navigation.state.RouteName 3. const route = navigationState.routes[navigationState.index]; 第一个似乎很好用。对于第二个,我不

我想在react navigator中获取当前routeName的名称。我遇到了三种解决方案:

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

 2. this.props.navigation.state.RouteName

 3. const route = navigationState.routes[navigationState.index];
第一个似乎很好用。对于第二个,我不知道如何使用它。第三个选项(如官方文档中所示)生成错误
引用错误:导航状态未定义


请帮助我在导航时找到活动屏幕名称的正确方法。

您能解释一下吗?如您所见,路线看起来像
路线(数组)+索引(数字)
内部,因此您只需通过
路线[索引]
打开它(我们称之为路线a),如果您发现路由A内部看起来仍然像
routes(A Array)+index(A number)
,则需要反复打开它,直到找到所需的最深路由。最深的路由没有路由作为它的属性。你能解释一下吗?正如你所看到的,路由看起来像
路由(数组)+索引(数字)
内部,所以你只需要通过
路由[index]
(我们称之为路由a)打开它,如果你发现路由a仍然像
路由(数组)+索引(数字)
内部,你需要一次又一次地打开它,直到你找到你需要的最深的路线。最深的路线没有路线作为其属性。
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
}