ios - 用户登录后动态更改登录选项卡和我的个人资料选项卡

标签 ios reactjs react-native react-redux react-navigation

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

我使用 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 })

我尝试创建另一个组件并连接它,然后将其导入选项卡页面文件,但我无法使用 IsLoggedIn() 的返回值。

// IfLoggedIn.js

function IsLoggedIn(props) {
  return props.loginState.isLoggedIn ? true : false
}

const mapStateToProps = ({ loginState }) => ({
  loginState
});

const mapDispatchToProps = (dispatch) => bindActionCreators({
  setLoginState
}, dispatch);

export default connect(mapStateToProps,mapDispatchToProps)(IsLoggedIn)

我在想我可以像这样在标签页文件中使用它:

// MainTabNavigator.js

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

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

最佳答案

为什么不直接在 IfLoggedIn 上返回您的 LoginStackMyProfileStack

function IsLoggedIn(props) {
  return ({props.loginState.isLoggedIn ? <MyProfileStack /> : <LoginStack />})
}

实际上 IMO,我更喜欢使用另一个 switchNavigator 在登录屏幕和我的内容屏幕之间切换,结帐 this react navigation docs on authentication flow

关于ios - 用户登录后动态更改登录选项卡和我的个人资料选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55155792/

相关文章:

iphone - 如何修复 uitableviewcell 中的 uiimageview 在滚动表时调整大小?

ios - UIImageView 中的大小限制?

javascript - 在渲染中使用不同的 html 元素时如何将 React.forwardRef 与 TypeScript 结合使用

javascript - React JS - 带有数据切换的链接不会重定向到 url

javascript - 鼠标悬停在 React 中

javascript - ReactJs:无法使用 map 循环对象数组

android - react native fbsdk 问题 - 任务 :react-native-fbsdk:compileDebugJavaWithJavac FAILED

ios - Swift:从 Firebase 打印坐标:0,1 - 2,3 而不是 0,1 - 1,2

javascript - React-Native:应用程序关闭时后台应用程序刷新

ios - NSURLConnection/CFURLConnection HTTP 加载失败(kCFStreamErrorDomainSSL,-9813)iOS