RN路由-React Navigation--Drawer navigation

1,799 阅读1分钟

引言

本来打算将React Navigation-Guides这一章内容集中写在这篇文章内的,但由于篇幅太长,阅读的时候很费劲,所以这里将Guides这一章的内容分篇来记录。接下来,我们来看看Drawer navigation!

Drawer navigation

导航的常见模式是使用左侧(有时是右侧)的抽屉在屏幕之间导航。

演示案例

开始之前,请安装@react-navigation/drawer:

  • npm
npm install @react-navigation/drawer
  • yarn
yarn add @react-navigation/drawer

1 基于Drawer navigation的一个小例子

要使用此抽屉导航器,请从@react navigation/drawer导入它:(向右滑动可打开)

import * as React from 'react';
import { Button, View } from 'react-native';
import { createDrawerNavigator } from '@react-navigation/drawer';
import { NavigationContainer } from '@react-navigation/native';

function HomeScreen({ navigation }) {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Button
        onPress={() => navigation.navigate('Notifications')}
        title="Go to notifications"
      />
    </View>
  );
}

function NotificationsScreen({ navigation }) {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Button onPress={() => navigation.goBack()} title="Go back home" />
    </View>
  );
}

const Drawer = createDrawerNavigator();

export default function App() {
  return (
    <NavigationContainer>
      <Drawer.Navigator initialRouteName="Home">
        <Drawer.Screen name="Home" component={HomeScreen} />
        <Drawer.Screen name="Notifications" component={NotificationsScreen} />
      </Drawer.Navigator>
    </NavigationContainer>
  );
}

2 打开和关闭抽屉

想要打开和关闭抽屉,可以使用下面两个方法:

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

如果要切换抽屉,请调用以下命令:

navigation.toggleDrawer();

这些功能中的每一个,在幕后,都只是调度动作:

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

如果想确定抽屉是否打开,可以这样做:

import { useIsDrawerOpen } from '@react-navigation/drawer';

// ...

const isDrawerOpen = useIsDrawerOpen();

上一章节:RN路由-React Navigation--Tab navigation

下一章节:RN路由-React Navigation--Authentication flows

参考文档:React Navigation - Drawer navigation