2

我们正在为我们的 React Native 应用程序使用 React Navigation 并显示侧栏。一切正常,但是,关闭抽屉不起作用。

实际上,当用户点击 Android 设备后退按钮时,我必须关闭抽屉。

所以,我navigation.closeDrawer();在后退按钮处理程序方法中调用。

backButtonTap = () => {
    const { navigation } = this.props;
    navigation.closeDrawer();
    DeviceEventEmitter.emit('NavigatedToNewRoute', {
      route: 'screen1'
    });
    navigation.navigate('screen1');
  }

但是,虽然我们试图通过设备后退按钮侧抽屉不关闭来关闭。 OpenDrawer方法工作正常。

我的侧边栏中有许多屏幕。那么,在每个类中我需要调用这个 closeDrawer 方法还是我们可以调用它的任何一个全局类?如果抽屉打开,我只需要关闭,如果用户点击设备后退按钮,我必须关闭这个抽屉。

有什么建议么?

4

2 回答 2

0

我认为 react-navigation 具有关闭抽屉的默认功能。如果它不起作用,那么试试这个也可以在函数中传递导航道具,以便它可以轻松处理这个问题。

this.props.navigationProps.toggleDrawer();
于 2019-04-09T06:51:51.153 回答
0

你可以试试下面的吗?

import { DrawerActions } from "react-navigation";
...
backButtonTap = () => {
    const { navigation } = this.props;
    //navigation.closeDrawer();
    this.props.navigation.dispatch(DrawerActions.closeDrawer());
    DeviceEventEmitter.emit('NavigatedToNewRoute', {
      route: 'screen1'
    });
    navigation.navigate('screen1');
  }
于 2019-04-09T06:37:51.437 回答