react-native - 汉堡包图标拒绝在 react-native 中显示
问题描述
所以我开始在 React-native 中玩 Navigation,我真的很喜欢它,除了我在以某种方式使用导航时遇到了死锁。现在担心的是。
我希望使用汉堡包图标显示标题。所以用户可以点击汉堡图标,它会在左侧显示菜单,用户可以在其中选择和执行任何任务,我试过了,它永远不会出现。
我的代码看起来是这样的:
应用程序.js
import React , {Component} from 'react';
import { View, Text, Image , StyleSheet } from 'react-native';
import { createAppContainer } from 'react-navigation';
import { createDrawerNavigator } from 'react-navigation-drawer';
import HamburgerIconMain from './HamburgerIcon/hamburgerIconMain';
class Home extends React.Component{
static navigationOptions = () => {
return{
headerLeft:<HamburgerIconMain/>
};
};
static navigationOptions = {
drawerLabel: 'Home',
drawerIcon: ({ tintColor }) => (
<Image
source={{uri:'http://imageholder.freeasphost.net/home.png'}}
style={[styles.icon, { tintColor: tintColor }]}
/>
),
};
render()
{
return(
<View>
<Text> Welcome to Home screen</Text>
</View>
);
}
}
class Profile extends React.Component{
static navigationOptions = {
drawerLabel: 'Profile',
drawerIcon: ({ tintColor }) => (
<Image
source={{uri:'http://imageholder.freeasphost.net/profile.png'}}
style={[styles.icon, { tintColor: tintColor }]}
/>
),
};
render()
{
return(
<View>
<Text>Welcome to Profile screen</Text>
</View>
);
}
}
class Settings extends React.Component{
static navigationOptions = {
drawerLabel: 'Settings',
drawerIcon: ({ tintColor }) => (
<Image
source={{uri:'http://imageholder.freeasphost.net/settings.png'}}
style={[styles.icon, { tintColor: tintColor }]}
/>
),
};
render()
{
return(
<View>
<Text>Welcome to Settings Screen</Text>
</View>
);
}
}
const MyDrawerNavigator = createDrawerNavigator({
Home:{
screen:Home
},
Settings:{
screen:Settings
},
Profile:{
screen:Profile
},
});
const MyApp = createAppContainer(MyDrawerNavigator);
export default class App extends Component {
render() {
return (
<MyApp/>
);
}
}
const styles = StyleSheet.create({
icon: {
width: 24,
height: 24,
},
});
然后汉堡图标的代码看起来像这样
import React, {Component} from 'react';
import { withNavigation } from 'react-navigation';
import { TouchableOpacity } from "react-native-gesture-handler";
import Icon from 'react-native-vector-icons/SimpleLineIcons';
class HamburgerIconMain extends React.Component{
render(){
return(
<TouchableOpacity>
style={{
width: 44,
height: 44,
marginLeft: 20
}}
onPress={()=>{
this.props.navigation.openDrawer();
}}>
<Icon name='menu' size={20} color='black'/>
</TouchableOpacity>
);
}
}
export default withNavigation(HamburgerIconMain);
我现在担心的是,带有汉堡图标的标题永远不会出现。我该怎么做才能解决这个问题
解决方案
https://reactnavigation.org/docs/en/next/stack-navigator.html#docsNav
根据文档,您需要创建StackNavigator。<HamburgerIconMain/>
或者,您可以为带有组件的主屏幕创建自己的标题。
像这样的东西。
render(){
return(
<View style={{flex:1, backgroundColor: 'green'}}>
<View style={{backgroundColor: 'yellow', height: 40, justifyContent: 'center'}}>
<Text> Header: add hamburger icon here </Text>
</View>
<View style={{flex: 1, backgroundColor: 'grey', justifyContent: 'center', alignItems: 'center'}}>
<Text> Welcome to Home screen</Text>
</View>
</View>
);
}
但是这样的解决方案很好,以防万一,如果你想在一个屏幕上看到标题。
推荐阅读
- vba - Outlook 日历应用程序详细信息
- python - 将 pandas 多索引级别列切换到标题行
- autodesk-forge - DataVizExtention:选择精灵时清除可视项的问题
- matlab - Simulink:向量求和并将输出保存到工作区
- android - 使用mobile-ffmpeg android创建视频时出现叠加和缩放问题?
- javascript - 如何在反应中创建复杂的 json(嵌套子到父)?
- java - 在 Eclipse 中,提交选项不可见
- spring-boot - 我无法通过 sql auth 代理在 GCP 中通过 springboot 应用程序从 cloudrun 连接到 cloud sql。有人有一步一步的例子吗?
- jenkins - removeAction/removeViewAction 与 removedJobAction/removedViewAction
- python - 在 python 的 ThreadPoolExecutor 中添加计划