如何根据应用状态创建底部导航?

时间:2019-08-15 19:26:19

标签: reactjs react-native redux

我有一个带有redux存储和axios中间件的简单react-native应用程序。我的应用程序中的底部导航包含4个标签。打开“配置文件”选项卡之前,我需要检查是否经过授权的用户。如果是,请转到配置文件,如果不是,请转到验证。我该怎么办?

  1. 在应用程序启动时(在我的根组件的componentDidMount()中),我检查用户授权并将其保存到存储中。在打开配置文件之前,我检查存储状态。但是,如何在bottomNavigation方法中获取此状态?以及如何切换“个人资料”和“身份验证”标签?
  2. 在减速器内部进行导航(针对ME_SUCCESS动作)。但是reducer应该是纯函数而没有副作用,我该如何在createBottomTabNavigator方法中组织它?
  3. 任何其他解决方案.....

我当前的越野车导航示例(在导航器内部的服务器上进行身份验证检查请求):

 const tabNavigator = createBottomTabNavigator(
      {
        Home: { screen: HomeScreen },
        Cart: { screen: CartStack },
        Delivery: { screen: DeliveryScreen },
        Profile: { screen: ProfileStack },
        // Item: { screen: ItemScreen }
      },
      {
        defaultNavigationOptions: ({ navigation }) => {
          const { routeName } = navigation.state;
          return {
            tabBarIcon: tabBarIcon(routeName),
            tabBarLabel: titleMapping[routeName],
            tabBarOnPress: ({ navigation, defaultHandler }) => {
              if (navigation.state.routeName == 'Profile') {
                client.get('/me').then(function(response) {
                  console.log(response)
                  if (response.data == null) {
                    navigation.navigate("Auth")
                  } else {
                    defaultHandler();
                  }
                });
              } else {
                defaultHandler();
              }
            },
          };
        },
        tabBarOptions: {
          activeTintColor: Colors.buttonMain,
          style: {
            backgroundColor: Colors.background,
            paddingBottom: 5,
          },
        },
      },
    );

0 个答案:

没有答案