Я хочу отображать значок меню HeaderLeft глобально на всех экранах. Когда я нажимаю на значок меню, мне нужно отобразить меню ящика. Я использую методы "OpenDrawer", "CloseDrawer" для открытия / закрытия меню ящика.
Но я всегда получаю "undefined is not a function (evaluating 'props.navigation.openDrawer()')"
. Я также пробовал следующее
props.navigation.dispatch(DrawerActions.openDrawer())
props.navigation.navigate(openDrawer())
Но ничего из вышеперечисленного не помогло. Вот мой частичный код
const MenuButton = (props) => {
return (
<View>
<TouchableOpacity onPress={() => { props.navigation.dispatch(DrawerActions.openDrawer())} }>
<Text>Menu</Text>
</TouchableOpacity>
</View>
)
};
const MyDrawerNavigator = createDrawerNavigator(
{
Wishist: {
screen: wishlist
},
},
{
contentComponent: SideMenuScreen,
drawerWidth: 200,
}
);
const AppNavigator = createBottomTabNavigator({
Home: {
screen: createStackNavigator({
Home: {
screen: Home
},
Contact: {
screen: Contact
}
},
{
defaultNavigationOptions: ({ navigation }) => ({
headerStyle: {
backgroundColor: 'white',
borderWidth:0,
borderBottomWidth:0
},
headerTitle: headerTitleNavigationOptions('HOME'),
headerLeft: <MenuButton navigation={navigation}/>,
headerRight: headerRightNavigatorOptions(navigation)
})
}),
navigationOptions: ({ navigation }) => ({
headerStyle: {
backgroundColor: 'white',
borderWidth:0,
borderBottomWidth:0
},
}),
}},
{
tabBarOptions: {
showLabel: false,
style: {
backgroundColor: 'white',
borderTopWidth:1
}
},
initialRouteName: 'Home',
tabBarComponent: TabBarBottom,
tabBarPosition: 'bottom',
animationEnabled: false,
swipeEnabled: false
}
);
const App = createAppContainer(AppNavigator);
MyDrawerNavigator
, объявленного в вашем основномAppNavigator
. Попробуйте сделать drawerNavigator контейнером для вашего приложения. - person Nishant Nair   schedule 19.05.2019