React Navigation5.0系列三:Drawer navigation的使用

简介: React Navigation5.0系列三:Drawer navigation的使用

在前面系列文章中我们了解5.0最新版本堆栈导航和选项卡导航的用法,今天我们来看看抽屉导航的使用方法。

React Navigation5.0系列一:StackNavigator的使用

React Navigation5.0系列二:TabNavigation的使用

@[toc]

安装


yarn add @react-navigation/drawer

使用


1.导入对应的组件
import { createDrawerNavigator } from '@react-navigation/drawer'
2.创建两个页面
const SettingsScreen = ({ navigation }) => {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>SettingScreen</Text>
      <Button
        title="Go to Details"
        onPress={() => navigation.navigate('Home')}
      />
    </View>
  )
}
const HomeScreen = ({ navigation }) => {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>HomeScreen</Text>
      <Button
        title="Go to Details"
        onPress={() => navigation.navigate('Setting')}
      />
    </View>
  )
}
3.创建drawer导航器实例
const Drawer = createDrawerNavigator();
4.在AppContainer中进行集成
const App = () => {
  return (
    <NavigationContainer>
      <Drawer.Navigator initialRouteName="Home">
        <Drawer.Screen name='Home' component={HomeScreen} />
        <Drawer.Screen name='Setting' component={SettingsScreen} />
      </Drawer.Navigator>
    </NavigationContainer>
  );
}

实现效果Drawer navigation的简单使用就是这样了,接下来讲解一下组件的打开与关闭及判断当前状态的判断方法。


打开和关闭Drawer的方法:

navigation.openDrawer();
navigation.closeDrawer();

或者也可以通过派发一些action的方式来进行打开或者关闭

navigation.dispatch(DrawerActions.openDrawer());
navigation.dispatch(DrawerActions.closeDrawer());
navigation.dispatch(DrawerActions.toggleDrawer());

通过如下的方式,可以判断当前的drawer的开关状态,在你需要的的时候

import { useIsDrawerOpen } from '@react-navigation/drawer';
const isDrawerOpen = useIsDrawerOpen();

抽屉导航还有许多属性可以进行配置,详细的看:https://reactnavigation.org/d...


Drawer Navigator属性介绍


  • initialRouteName 设置首次加载默认的第一个页面路由名字
  • screenOptions 设置页面的选项
  • openByDefault 默认的抽屉打开状态
  • drawerPosition 设置抽屉打开的位置,值为’left'和‘right', 默认是left
  • drawerType 抽屉打开的方式和动画
  • font 常用的默认效果动画
  • back 隐藏也页面后面,滑动时显示
  • slide 页面和抽屉一起滑动时显示drawer
  • permanent 一直在屏幕边缘存在,这个在大屏幕上比较实用
  • drawerStyle 设置抽屉的样式
  • drawerContent 设置抽屉的内容选项,提供了DrawerItem对象用来设置各个导航项以及drawerContentOptions来配置相关导航选项的样式

......

等等属性内容,可以通过上面的地址仔细阅读


集成出现的问题


1.使用drawer navigation导航报错:undefined is not a function (near '...createRouter...')

微信图片_20220610103258.png微信图片_20220610103312.png解决方式:升级依赖

yarn upgrade @react-navigation/native

2.上面升级后报错:"SyntaxError in @react-navigation/xxx/xxx.tsx" or "SyntaxError: /xxx/@react-navigation/xxx/xxx.tsx: Unexpected token"微信图片_20220610103525.png微信图片_20220610103536.png解决方法:删除node_modules 及 lock文件,重新安装即可

If you use npm:

rm -rf node_modules
rm package-lock.json
npm install

If you use yarn:

Copy
rm -rf node_modules
rm yarn.lock
yarn

今天就介绍这些吧,如果问题欢迎在评论区留言,和我一起交流。

目录
相关文章
|
前端开发
React Navigation5.0系列四:Nesting navigators(嵌套导航)
React Navigation5.0系列四:Nesting navigators(嵌套导航)
263 0
React Navigation5.0系列四:Nesting navigators(嵌套导航)
|
前端开发
React Navigation5.0系列二:TabNavigation的使用
React Navigation5.0系列二:TabNavigation的使用
222 0
React Navigation5.0系列二:TabNavigation的使用
|
移动开发 前端开发 iOS开发
React Navigation5.0系列一:StackNavigator的使用
React Navigation5.0系列一:StackNavigator的使用
170 0
React Navigation5.0系列一:StackNavigator的使用
|
缓存 JSON 前端开发
《精通react/vue组件设计》之配合React Portals实现一个功能强大的抽屉(Drawer)组件
本文是笔者写组件设计的第六篇文章,内容依次从易到难,今天会用到react的高级API React Portals,它也是很多复杂组件必用的方法之一. 通过组件的设计过程,大家会接触到一个完成健壮的组件设计思路和方法,也能在实现组件的过程逐渐对react/vue的高级知识和技巧有更深的理解和掌握,并且在企业实际工作做游刃有余.
316 0
|
前端开发 Android开发 iOS开发
React Navigation 导航栏样式调整+底部角标消息提示
五一佳节匆匆而过,有人选择在外面看人山人海,有人选择宅在家中度过五一,也有人依然坚守在第一线,致敬! 这是坚持学习react-native的第二篇文章,可能会迟到,但是绝不会缺席,这篇要涉及到的是react-navigation,也是rn社区主推的一个导航库。
1548 0
|
前端开发 Android开发 iOS开发
|
6月前
|
设计模式 前端开发 数据可视化
【第4期】一文了解React UI 组件库
【第4期】一文了解React UI 组件库
357 0
|
6月前
|
存储 前端开发 JavaScript
【第34期】一文学会React组件传值
【第34期】一文学会React组件传值
75 0
|
6月前
|
前端开发
【第31期】一文学会用React Hooks组件编写组件
【第31期】一文学会用React Hooks组件编写组件
76 0
|
6月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
121 0