关于React-Native如何判断当前router路径的方法

背景:还是那个可爱的产品经理,需要我在app的tab页面和tab二级页面做不同处理,那么问题来了,在主程序中,构建底部tab,我们用的是createBottomTabNavigator这个方法,也就是说,不能用this.props.navigation这个方法去判断当前是在tab主页面还是二级页。好吧,那就看看怎么解决这个问题。

解决方法:

RN的官方文档里给出了解答。直接贴代码

import { createAppContainer, createStackNavigator } from 'react-navigation';
import { GoogleAnalyticsTracker } from 'react-native-google-analytics-bridge';

const tracker = new GoogleAnalyticsTracker(GA_TRACKING_ID);

// gets the current screen from navigation state
function getActiveRouteName(navigationState) {
  if (!navigationState) {
    return null;
  }
  const route = navigationState.routes[navigationState.index];
  // dive into nested navigators
  if (route.routes) {
    return getActiveRouteName(route);
  }
  return route.routeName;
}

const AppNavigator = createStackNavigator(AppRouteConfigs);
const AppContainer = createAppContainer(AppNavigator);

export default () => (
  <AppContainer
    onNavigationStateChange={(prevState, currentState, action) => {
      const currentScreen = getActiveRouteName(currentState);
      const prevScreen = getActiveRouteName(prevState);

      if (prevScreen !== currentScreen) {
        // the line below uses the Google Analytics tracker
        // change the tracker here to use other Mobile analytics SDK.
        tracker.trackScreenView(currentScreen);
      }
    }}
  />
);

由上可以看到,在router根路径上加上onNavigationStateChange的方法,可以知道当前和上一个路径的routeName,完美解决了需求。tracker不需要可以直接删掉。 文档地址:https://reactnavigation.org/docs/en/screen-tracking.html

ok,到这里,完结撒花~今天是端午节,也祝大家端午安康!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值