我在我的应用程序中添加了用于实现抽屉导航的react-navigation-drawer。我创建了一个名为PrimaryNav.js的文件,并在其中添加了所有导航代码.
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中调用了这个文件,我面临的问题是我需要根据用户的角色设置一个抽屉项目。因此,如果用户角色是出纳员,他不应该能够看到所有的菜单。
所有页面都正确地出现在抽屉菜单中,但问题是应该如何在我的应用程序中按角色管理菜单,并根据用户的角色更改菜单?。
发布于 2019-12-28 19:28:10
嗨,我看到你的问题了,我想帮你。我为抽屉的部件做了一个定制的设计。-firstly --您可以为抽屉设计创建一个额外的文件,如DrawerComponent.js,并在您创建抽屉导航器的代码中导入
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
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选项卡,我让用户使用三元操作符作为条件。你可以随意修改。希望它对你有帮助。
https://stackoverflow.com/questions/59496924
复制相似问题