因为您在第一个菜单中设置了菜单图像。你把图像包装在另一个
TouchableOpacity
这意味着
可触摸不透明度
正在接收用户触摸事件。这不是你想要的行为,因为你想要
可触摸不透明度
在HeaderLeft上作为输入的接收器。所以只需去掉“多余的”
可触摸不透明度
.
// Inside Header
navigationOptions: ({ navigation }) => ({
headerLeft:
<TouchableOpacity onPress={() => {navigation.dispatch(DrawerActions.toggleDrawer())} }>
<MenuImage navigation={navigation}/>
</TouchableOpacity>,
//Created component and added inside navigationOptions
const MenuImage = ({navigation}) => {
if(!navigation.state.isDrawerOpen){
// No need of Touchable here. Since you want the above Touchable to pick up the onPress event.
return <Image source={require('../assets/images/menu.png')} style={{width: 24, height: 24, resizeMode: 'contain' ,marginLeft: 15}}/>.
}else{
return <MenuIcon style={{paddingLeft: 10, paddingRight: 10}} name="md-arrow-back" size={30} color="black"/>
}
}
第二个例子之所以有效,只是因为没有额外的
Touchable
处理OnPress事件。