現在のルートまたはスクリーンの名前を反応ナビゲーションで使いたいので、if条件を変更するために内部で使用します。
次のコードとしてキャッチできます。
this.props.navigation.state.routeName
"react-navigation": "^3.0.8"
とDrawerNavigatorを使用しているときに、this.props.activeItemKey
を使用してthis.propsオブジェクトからアクセスできます。
ネストされたナビゲーターを使用している場合、このコードを使用して現在のアクティブな画面の状態を取得できます
const getActiveRouteState = function (route: NavigationState): NavigationState {
if (!route.routes || route.routes.length === 0 || route.index >= route.routes.length) {
return route;
}
const childActiveRoute = route.routes[route.index] as NavigationState;
return getActiveRouteState(childActiveRoute);
}
使用法:
const activeRoute = getActiveRouteState(this.props.navigation.state);
NavigationDrawerから現在アクティブな画面の状態を取得する必要があるときに、これを使用しています。
TabNavigator
に複数のBottomTabNavigator
sがネストされています。 TabNavigator
の現在のルートを取得するには:
const pathAndParams = props.navigation.router.getPathAndParamsForState(props.navigation.state) || {}
const activePath = pathAndParams.path