React Native — открытый ящик не работает при использовании Navigation.push()

#react-native #navigation-drawer #react-navigation-drawer

#react-native #навигация-ящик #react-navigation-drawer

Вопрос:

Я работаю над приложением React Native Expo, в котором у меня есть как навигация по стеку, так и навигация по ящикам. У меня есть вложенный навигатор ящиков внутри моего навигатора стека в app.js . Когда я нажимаю на меню гамбургера в ящике, он открывает ящик с правой стороны. Он отлично работал на всех экранах без каких-либо проблем.

Проблема возникла, когда я решил использовать this.props.navigation.push(«Оплата») для перехода на экран оплаты. Функция OpenDrawer() не передается как часть prop при использовании navigation.push(), тогда как при использовании navigation.navigate() она работает нормально.

Функция OpenDrawer () работает на экране оплаты, когда я перехожу к этому экрану, используя приведенную ниже инструкцию

this.props.navigation.navigate(«Оплата»);

Функция OpenDrawer() выдает ошибку function not found при переходе к этому экрану с помощью инструкции ниже

this.props.navigation.push(«Оплата»);

Ниже мой app.js где я вложил ящик в навигатор стека. Может кто-нибудь посоветовать, как решить проблему. Спасибо!!!

app.js

 import React from "react";
import {
  Dimensions,
  ScrollView,
  Button,
  View,
  SafeAreaView,
} from "react-native";
import { createStackNavigator } from "@react-navigation/stack";
import {
  createDrawerNavigator,
  DrawerContentScrollView,
} from "@react-navigation/drawer";

import {
  NavigationContainer,
  useNavigation,
  DrawerItem,
} from "@react-navigation/native";
import Landingzone from "./components/Landingzone";
import LandingPage from "./components/LandingPage";
import Summary from "./components/Summary";
import Payment from "./components/Payment";
import { TouchableOpacity } from "react-native-gesture-handler";
import { Icon, Text } from "react-native-elements";
const myFont = Platform.OS === "ios" ? "Arial" : "sans-serif";

let myFontSize = 15;

const SCREEN_WIDTH = Dimensions.get("window").width;

if (SCREEN_WIDTH > 300 amp;amp; SCREEN_WIDTH <= 360) {
  myFontSize = 10;
} else if (SCREEN_WIDTH > 300 amp;amp; SCREEN_WIDTH <= 415) {
}

export default function App() {
  const Stack = createStackNavigator();
  const Drawer = createDrawerNavigator();

  const DrawerNavigator = () => (
    <Drawer.Navigator
      drawerPosition="right"
      drawerContentOptions={{
        labelStyle: {
          color: "white",
          fontFamily: myFont,
          fontSize: 16,
        },
      }}
      drawerStyle={{
        backgroundColor: "#343a40",
        flex: 1,
        flexDirection: "column",
      }}
      drawerContent={(props) => (
        <DrawerContentScrollView
          contentContainerStyle={{
            flex: 1,
            flexDirection: "column",
          }}
        >
          <View
            style={{
              flex: 0.15,
            }}
          >
            <Icon
              reverse
              name="user-circle-o"
              type="font-awesome"
              color="#517fa4"
              containerStyle={{
                backgroundColor: "green",
                left: 115,
              }}
            />
            <Text>SaimugaTutorials@gmail.com</Text>
          </View>
          <View
            style={{
              flex: 0.1,

              justifyContent: "center",
            }}
          >
            <Text>Enroll</Text>
          </View>
        </DrawerContentScrollView>
      )}
    >
      <Drawer.Screen
        name="Summary"
        component={Summary}
        options={{ headerShown: false }}
      />

      <Drawer.Screen
        name="Payment"
        component={Payment}
        options={{ headerShown: false }}
      />
    </Drawer.Navigator>
  );

  const StackNavigator = () => (
    <Stack.Navigator initialRouteName="Welcome">
      <Stack.Screen
        name="Welcome"
        component={LandingPage}
        options={{ headerShown: false }}
      />
      <Stack.Screen
        name="Payment"
        component={Payment}
        options={{ headerShown: false }}
      />

      <Stack.Screen
        name="Summary"
        component={DrawerNavigator}
        options={{ headerShown: false, gestureEnabled: false }}
      />
    </Stack.Navigator>
  );

  return (
    <NavigationContainer>
      <StackNavigator />
    </NavigationContainer>
  );
}
  

Комментарии:

1. есть какие-либо обновления по этому поводу?