【问题标题】:React Native Drawer Navigation always closing automaticallyReact Native Drawer Navigation 总是自动关闭
【发布时间】:2021-10-18 04:54:21
【问题描述】:

我有一个使用 React Navigation 的 React Native 应用程序。该应用程序已经包含一个嵌套 Stack Navigator 的 Tab Navigator。现在我还想在最顶层添加一个抽屉导航,显示自定义抽屉内容。

所以我的层次结构是 DrawerNavigator(嵌套 1 个 TabNavigator)> TabNavigator(嵌套 5 个 StackNavigators)> Stack Navigator(嵌套单个数量的实际内容屏幕)。

为此,我在顶层添加了 Drawer Navigator,嵌套了现有的 Tab Navigator:

<Drawer.Navigator
    initialRouteName="MainTabNav"
    drawerContent={props => <DrawerMenu {...props} />}
    screenOptions={{
        headerShown: false,
    }}>
    <Drawer.Screen name="MainTabNav" component={MainTabNavigator} />
</Drawer.Navigator>

这是我现在的问题:当我从左向右滑动时,抽屉会显示出来,只要我将手指放在屏幕上,我就可以看到我的自定义抽屉导航组件。每当我将手指从屏幕上移开时,抽屉导航就会再次自动关闭。

此外,从 Stack Navigator 中的 Pressable 调用 navigation.dispatch(DrawerActions.openDrawer()) 什么也没做 - 抽屉根本不会打开。

...
import {useNavigation} from '@react-navigation/native';
import {DrawerActions} from '@react-navigation/native';

const DrawerMenuButton = props => {
  const navigation = useNavigation();

  return (
    <Pressable
      onPress={() => {
        navigation.dispatch(DrawerActions.toggleDrawer());
      }}>
...

有人知道这个问题的解决方案吗?

非常感谢和最好的问候 智能家居制造商

P.S.:我的配置如下

"react": "17.0.2",
"react-native": "0.64.2",
"@react-navigation/drawer": "^6.1.3",
"@react-navigation/native": "^5.1.7",
"@react-navigation/stack": "^5.2.14",
"@react-navigation/bottom-tabs": "^5.5.2",

【问题讨论】:

  • 试试redux-logger 看看为什么会改变状态。
  • 好的,我激活了 redux devtools 记录器。启动应用程序后。 “INIT”动作之后将是“UNKNOWN”动作。然后当我拉开抽屉时,会触发“OPEN_DRAWER”动作,一旦我将手指离开屏幕,就会触发第二个“OPEN_DRAWER”动作,并且抽屉导航会再次自动关闭。两个“OPEN_DRAWER”动作都有以下内容{ type: 'OPEN_DRAWER', target: 'drawer-_VK6JQ8VYxsWzyNVMIV3A' }。

标签: javascript react-native react-navigation-v5 react-navigation-drawer


【解决方案1】:

我看到@react-navigation/native 的版本是 v5。但抽屉是v6。所以请降级到v5。它会起作用的。

npm install @react-navigation/drawer@^5.x

【讨论】:

  • 就是这样 - 降级抽屉版本后,它可以工作了!太棒了,谢谢你!我没有意识到我安装了不同的版本 - 很好观察!非常感谢:-)
  • 我已经为此苦苦挣扎了好几天!我还想提一下,我也在为所有 DrawerAction 的调度而苦苦挣扎,但是这个解决方案解决了我所有的问题
猜你喜欢
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
  • 2021-11-02
  • 2021-01-29
  • 2021-12-08
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
相关资源
最近更新 更多