Как я могу скрыть меню от навигации по ящикам в реагирующей нативной базе с разрешения пользователя базы данных? - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь сделать проект в естественном режиме, используя выставку. У меня есть переключатель навигации для входа в систему. После входа у меня есть навигация по ящикам, которая содержит отдельную навигацию по стеку. Для каждого экрана я хочу скрыть несколько меню от навигации по ящикам на основе разрешений пользователей, так как приложение будет использоваться администратором, сотрудником, менеджером и т. Д.

Или есть другой способ создания динамической навигации по ящикам на основемое требование с меню, полученным из базы данных в соответствии с разрешением пользователя?

Навигация по ящику должна отображаться в зависимости от типа пользователя после входа в систему.

Вот мой фрагмент кода для навигации по ящику:

const DrawerNav = createDrawerNavigator({
  HomeScreen: {
    screen: createStackNavigator({
      HomeScreen: {
        screen: HomeScreen,
        navigationOptions: ({ navigation }) => {
          return {
            title: "Dashboard",
            headerLeft: (
              <Ionicons
                name="md-menu"
                size={32}
                color="white"
                style={{ paddingLeft: 20 }}
                onPress={() => navigation.toggleDrawer()}
              />
            ),
            headerStyle: {
              backgroundColor: "#B00020"
            },
            headerTintColor: "#fff",
            headerTitleStyle: {
              fontWeight: "bold"
            }
          };
        }
      }
    }),
    navigationOptions: ({ navigation }) => ({
      drawerLabel: "Dashboard",
      drawerIcon: () => <Ionicons name="md-home" size={28} color="#B00020" />
    })
  },
  UserlistDetails: {
    name: UserlistDetails,
    screen: createStackNavigator({
      UserlistDetails: {
        screen: UserlistDetails,
        navigationOptions: ({ navigation }) => {
          return {
            title: "User Accnt Details",
            headerLeft: (
              <Ionicons
                name="md-menu"
                size={32}
                color="white"
                style={{ paddingLeft: 20 }}
                onPress={() => navigation.toggleDrawer()}
              />
            ),
            headerStyle: {
              backgroundColor: "#B00020"
            },
            headerTintColor: "#fff",
            headerTitleStyle: {
              fontWeight: "bold"
            }
          };
        }
      },
      CreateNewUser: {
        screen: CreateNewUser,
        navigationOptions: ({ navigation }) => {
          return {
            title: "Create New User",
            headerStyle: { backgroundColor: "#B00020" },
            headerTintColor: "#fff",
            headerTitleStyle: { fontWeight: "bold" }
          };
        }
      }
    }),
    navigationOptions: ({ navigation }) => ({
      drawerLabel: "User Accnt Details",
      drawerIcon: () => <Ionicons name="md-person" size={28} color="#B00020" />
    })
  }
});

const StackNav = createStackNavigator(
  { Dashboard: DrawerNav },
  {
    defaultNavigationOptions: ({ navigation }) => {
      return { header: null };
    }
  }
);

const Navigation = createAppContainer(StackNav);

export default class Home extends React.Component {
  static navigationOptions = { header: null };
  render() {
    return (
      <View style={styles.container}>
        <Navigation />
      </View>
    );
  }
}

1 Ответ

0 голосов
/ 26 октября 2019

Если вы проверяете документы реагирования навигации, в нем говорится, что одним из ограничений является отсутствие возможности иметь динамические маршруты. Все маршруты должны быть статичными и определены в начале. Подробнее здесь: https://reactnavigation.org/docs/en/limitations.html#targetText=Dynamic%20routes&targetText=React%20Navigation%20does%20not%20currently,can%20do%20this%20using%20params.

...