作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用手势工作的 React-Navigation 5 抽屉菜单,但我还想在标题的右侧添加一个图标来切换抽屉菜单。
我的 App.js 中有这样的导航设置:
import {NavigationContainer, DrawerActions} from '@react-navigation/native';
//....... other imports
const HomeStack = createStackNavigator();
const HomeStackScreens = () => (
<HomeStack.Navigator
screenOptions={{
headerStyle: {
backgroundColor: '#5C6BC0',
},
headerTintColor: '#fff',
headerRight: () => {
return (
<TouchableOpacity
onPress={() => DrawerActions.toggleDrawer()}>
<Icon name="bars" color="#FFF" size={18} />
</TouchableOpacity>
);
},
}}>
<HomeStack.Screen
name="Home"
component={HomeScreen}
options={{
header:({scene, previous, navigation}) => {
return (
<TouchableOpacity onPress={() => navigation.toggleDrawer()}>
<Icon name="bars" color="#FFF" size={18} />
</TouchableOpacity>
);
}
}}
/>
<HomeStack.Screen name="Login" component={Login} />
<HomeStack.Screen name="Register" component={Register} />
</HomeStack.Navigator>
);
const ProfileStack = createStackNavigator();
const ProfileStackScreens = () => (
<ProfileStack.Navigator>
<ProfileStack.Screen name="Profile" component={Profile} />
</ProfileStack.Navigator>
);
const SettingStack = createStackNavigator();
const SettingStackScreens = () => (
<SettingStack.Navigator>
<SettingStack.Screen name="Profile" component={Profile} />
</SettingStack.Navigator>
);
const Drawer = createDrawerNavigator();
const DrawerScreens = () => (
<Drawer.Navigator>
<Drawer.Screen name="Home" component={HomeStackScreens} />
<Drawer.Screen name="Profile" component={ProfileStackScreens} />
<Drawer.Screen name="Settings" component={SetttingStackScreens} />
</Drawer.Navigator>
);
class MyApp extends React.Component {
render() {
return (
<NavigationContainer>
<DrawerScreens />
</NavigationContainer>
);
}
}
export default MyApp;
最佳答案
这是我提出的最终解决方案,它需要对我的原始代码进行最少的更改。关键是在 screenOptions 或 options 中接收“导航”,然后我可以在 screenOptions/options 的子项中调用导航方法。
<HomeStack.Navigator
screenOptions={({navigation}) => ({
headerStyle: {
backgroundColor: '#5C6BC0',
},
headerTintColor: '#fff',
headerRight: () => {
return (
<TouchableOpacity
style={{paddingRight: 8}}
onPress={() => navigation.toggleDrawer()}>
<Icon name="bars" color="#FFF" size={18} />
</TouchableOpacity>
);
},
})}>
关于react-native - 如何在 React Navigation 5 中调用 toggleDrawer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61473234/
我是 ReactJS 的新手,我正在使用 @material-ui 创建标题和侧边栏。 我有 2 个文件,Sidebar.js、Header.js。 在 Header.js 上,我有以下行: 在
在我的导航文件中,当我想要切换抽屉时,出现以下错误: TypeError: navigation.openDrawer is not a function.(In 'navigation.openDr
我有一个使用手势工作的 React-Navigation 5 抽屉菜单,但我还想在标题的右侧添加一个图标来切换抽屉菜单。 我的 App.js 中有这样的导航设置: import {Navigation
我是一名优秀的程序员,十分优秀!