Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 用户登录后,使用“我的配置文件”选项卡动态更改“登录”选项卡_Ios_Reactjs_React Native_React Redux_React Navigation - Fatal编程技术网

Ios 用户登录后,使用“我的配置文件”选项卡动态更改“登录”选项卡

Ios 用户登录后,使用“我的配置文件”选项卡动态更改“登录”选项卡,ios,reactjs,react-native,react-redux,react-navigation,Ios,Reactjs,React Native,React Redux,React Navigation,在应用程序启动时,将显示“登录”底部选项卡。我试图实现的是在用户登录应用程序后,将显示的“登录”选项卡更改为“我的个人资料”选项卡 我使用Redux来存储应用程序的登录状态,并设法获取状态,但我不知道如何使用它来动态更改选项卡 以下是声明的两个选项卡: // MainTabNavigator.js const LoginStack = createSwitchNavigator({ Login: LoginScreen, }); LoginStack.navigationOptions

在应用程序启动时,将显示“登录”底部选项卡。我试图实现的是在用户登录应用程序后,将显示的“登录”选项卡更改为“我的个人资料”选项卡

我使用Redux来存储应用程序的登录状态,并设法获取状态,但我不知道如何使用它来动态更改选项卡

以下是声明的两个选项卡:

// MainTabNavigator.js

const LoginStack = createSwitchNavigator({
  Login: LoginScreen,
});

LoginStack.navigationOptions = {
  tabBarVisible: true,
  tabBarLabel: 'Login',
  tabBarIcon: ({ focused }) => (
    <TabBarIcon
      focused={focused}
      name={Platform.OS === 'ios' ? 'ios-link' : 'md-link'}
    />
  ),
}

const MyProfileStack = createSwitchNavigator({
  MyProfile: HomeScreen,
});

MyProfileStack.navigationOptions = ({navigation}) => ({
  tabBarVisible: true,
  tabBarLabel: 'My Profile',
  tabBarIcon: ({ focused }) => (
    <TabBarIcon
      focused={focused}
      name={Platform.OS === 'ios' ? 'ios-person' : 'md-person'}
    />
  ),
})

export default createBottomTabNavigator({ LoginStack })
我想我可以在tabs页面文件中使用它,如下所示:

// MainTabNavigator.js

const InterChangeTab = IsLoggedIn ? MyProfileStack : LoginStack
export default createBottomTabNavigator({ InterChangeTab })

但它不起作用,因为IsLoggedIn是一个组件,而不是一个常规函数。

为什么不直接在
iLoggedin
上返回您的
LoginStack
MyProfileStack

函数IsLoggedIn(道具){
返回({props.loginState.isLoggedIn?:})
}

实际上,在我看来,我更喜欢使用另一个switchNavigator在登录屏幕和我的内容屏幕之间切换,签出

将其设置为具有rerender的状态。@SnehaBharti我认为我们在使用状态时遇到了同样的问题:,您如何对rerender导航作出反应?是的。。构建2功能。。1个用于登录前,1个用于登录后,并使用condition@SnehaBharti很抱歉,我不明白,我应该在哪里创建这两个函数?我试过了,但它说:“这个导航器缺少导航道具。”。在react navigation 3中,您必须直接设置应用程序容器,对吗?我相信您正在尝试文档中的身份验证流程?你能分享你所有的导航器堆栈吗,以及你想从哪里调用
导航
道具?嘿,我刚刚浏览了你的代码。我有一个建议,你可以完全摆脱你的
IfLoggedIn.js
,在
MainTabNavigator
上包括你的登录和配置文件堆栈。要导航,你可以在
登录
屏幕的
组件更新
上检查你的状态,然后,或者(我甚至更好)在您的redux操作中,检查并确认登录成功。
// MainTabNavigator.js

const InterChangeTab = IsLoggedIn ? MyProfileStack : LoginStack
export default createBottomTabNavigator({ InterChangeTab })