【发布时间】:2021-07-10 07:22:23
【问题描述】:
大家好,我是反应原生的新手。我想使用带有菜单按钮的抽屉导航。但实际上我可能不太了解反应导航。当我按下 openDrawer 的按钮时,我收到这样的错误;
TypeError:navigation.openDrawer 不是函数。 (在'navigation.openDrawer()'中,'navigation.openDrawer'是未定义的)
这是我的零食示例; https://snack.expo.io/@vubes/drawer-check
这是我的代码的有用部分。也许你能理解我的问题。 提前感谢任何可以提供帮助的人。
function DovizStack({navigation}) {
return (
<Stack.Navigator
initialRouteName="Döviz"
screenOptions={{
headerStyle: { backgroundColor: "#1D1D1D" },
headerTintColor: "#fff",
headerTitleStyle: { fontWeight: "bold" },
}}
>
<Stack.Screen
name="Doviz"
component={Doviz}
options={{
title: "Döviz",
headerTitleAlign: "center",
headerLeft: () => (<TouchableOpacity style={{paddingLeft:20}} onPress={()=> navigation.openDrawer()}>
<MaterialCommunityIcons name="menu" color={"white"} size={20} />
</TouchableOpacity>),
}}
/>
<Stack.Screen
name="dovizBuyDetails"
component={dovizBuyDetails}
options={{ title: "Alış", headerTitleAlign: "center" }}
/>
<Stack.Screen
name="dovizSellDetails"
component={dovizSellDetails}
options={{ title: "Satış", headerTitleAlign: "center" }}
/>
</Stack.Navigator>
);
}
我有 5 个这样的堆栈。之后是 myTab。
抽屉栈;
function DrawerStack() {
return(
<Drawer.Navigator initialRouteName="Menu" drawerPosition= "right" >
<Drawer.Screen name="stack" component={stack} />
<Drawer.Screen name="Doviz" component={DovizStack}/>
<Drawer.Screen name="Altın" component={AltinStack} />
</Drawer.Navigator>
)
}
和默认堆栈;
export default function stack() {
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen
options={{ headerShown: false }}
name="Giriş"
component={LandingStack}
/>
<Stack.Screen
options={{ headerShown: false }}
name="drawer"
component={myTab}
/>
</Stack.Navigator>
</NavigationContainer>
);
}
实际上我可以使用登录屏幕(登录页面,注册)运行抽屉,但我不想在没有登录的情况下显示
【问题讨论】:
-
如果你抛出一个snack.expo.io来调试问题会很容易。 snack.expo.io/@raajnadar/…我有一个演示,如果有用,请告诉我。
-
这是很好的小吃,但不是我的答案,谢谢
-
你能在你身边做点心吗?错误我会解决的。
标签: javascript react-native react-navigation react-navigation-drawer