React Navigation-基于Routes.js中的Context值的条件渲染屏幕

时间:2020-03-17 09:15:26

标签: react-native react-navigation conditional-rendering context-api

我对RNavigation中的条件渲染有疑问,

假设我有3个标签(“首页”,“上传”,“个人资料”)。

如果用户已经登录,我需要处理Upload screen

实际上我已经创建了自己的Context包含isLoggedin,但是我不知道如何在Routes.js中使用它

const TabNavigator = createMaterialTopTabNavigator({
  Home:{ screen:Home },
  Upload:{ screen:Upload }, // here i need to handle if user not logged in yet i want to use screen:PleaseLogin
  //Upload:this.context.User.isLoggedin ? {screen:Upload} : {screen:PleaseLogin}
  Profile:{ screen:Profile },
})

我认为这种情况与使用createSwitchNavigator的{​​{3}}不同

我该如何实现?

编辑:

我不知道如何在this.context中添加Routes.js,因为Routes.js不是react component

2 个答案:

答案 0 :(得分:0)

您可以尝试

Upload:{ screen:this.context.User.isLoggedin ? Upload : PleaseLogin  },

答案 1 :(得分:0)

您可以在要设置 this.context.User.isLoggedin 的位置添加全局变量

global.isLoggedin = this.context.User.isLoggedin;

然后

Upload:{ global.isLoggedin ? Upload : PleaseLogin  },