首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在react本机中的用户角色智能抽屉导航

在react本机中的用户角色智能抽屉导航
EN

Stack Overflow用户
提问于 2019-12-27 06:33:36
回答 1查看 1.2K关注 0票数 3

我在我的应用程序中添加了用于实现抽屉导航的react-navigation-drawer。我创建了一个名为PrimaryNav.js的文件,并在其中添加了所有导航代码.

代码语言:javascript
复制
import Login from './components/Login';
import Employee from './pages/Employee';
import { createAppContainer,SafeAreaView, } from 'react-navigation'
import { createDrawerNavigator, DrawerItems } from 'react-navigation-drawer';
import React from 'react';

const Primary_Nav = createDrawerNavigator({
    Login: {
      screen: Login,
      navigationOptions: {
        drawerLabel: () => null
      }
    },
    Home_kitchen: {
      screen: Home_kitchen,
      navigationOptions: {
        drawerLabel: "Home"
      }
    },
    Employee: {
      screen: Employee,
      navigationOptions:{
        drawerLabel:"Employee",
      }
    },
  },{
    initialRouteName:'Login',
    drawerPosition: 'left',
    drawerType: "slide",
    }
});

const PrimaryNav = createAppContainer(Primary_Nav);
export default PrimaryNav;

就像上面那样。我已经在App.js中调用了这个文件,我面临的问题是我需要根据用户的角色设置一个抽屉项目。因此,如果用户角色是出纳员,他不应该能够看到所有的菜单。

所有页面都正确地出现在抽屉菜单中,但问题是应该如何在我的应用程序中按角色管理菜单,并根据用户的角色更改菜单?

EN

回答 1

Stack Overflow用户

发布于 2019-12-28 19:28:10

嗨,我看到你的问题了,我想帮你。我为抽屉的部件做了一个定制的设计。-firstly --您可以为抽屉设计创建一个额外的文件,如DrawerComponent.js,并在您创建抽屉导航器的代码中导入

代码语言:javascript
复制
import DrawerComponent from "./DrawerComponent";

const Primary_Nav = createDrawerNavigator(
{
 Login: {
  screen: Login,
  navigationOptions: {
    drawerLabel: () => null
  }
},
Home_kitchen: {
  screen: Home_kitchen,
  navigationOptions: {
    drawerLabel: "Home"
  }
},
Employee: {
  screen: Employee,
  navigationOptions: {
    drawerLabel: "Employee"
  }
}
},
{
  initialRouteName: "Login",
  drawerPosition: "left",
  drawerType: "slide",
  contentComponent: DrawerComponent // i added this DrawerComponent
}
);

const PrimaryNav = createAppContainer(Primary_Nav);
export default PrimaryNav;

现在在DrawerComponent.js

代码语言:javascript
复制
import React, { Component } from "react";
import { Text, View, TouchableOpacity } from "react-native";

export default class DrawerComponent extends Component {
  constructor(props) {
    super(props);

    this.state = {
      role: 1 // i used 1 for cashier and 0 for chef
    };
  }

  render() {
    const { role } = this.state;
    const { navigation } = this.props;
    return (
      <View style={{ flex: 1, paddingVertical: 40, paddingHorizontal: 20 }}>
        <TouchableOpacity
          style={{ margin: 20 }}
          onPress={() => navigation.navigate("Home_kitchen")}
        >
          <Text>Home</Text>
        </TouchableOpacity>
        {role ? (
          <TouchableOpacity
            style={{ margin: 20 }}
            onPress={() => navigation.navigate("Employee")}
          >
            <Text>Employee</Text>
          </TouchableOpacity>
        ) : null}
      </View>
    );
  }
}

如果您将角色更改为0,则在抽屉导航器中禁用Employee选项卡,我让用户使用三元操作符作为条件。你可以随意修改。希望它对你有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59496924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档