android - [ReactNative]DrawerLayoutAndroid 在使用堆栈导航器后行为异常

标签 android react-native drawerlayout

我正在使用 React Native 制作一个 Android 应用程序。

我通过 DrawerLayoutAndroid 在主页上创建了一个抽屉,并使用 useRef 将其应用到 ref={}

我可以使用某些按钮上的 ref.current.openDrawer(); 打开抽屉。

第一次运行应用程序时效果很好,但是当您使用堆栈导航移动屏幕并按下按钮后返回主页面时,效果不佳。

屏幕变暗并且抽屉没有出现。

使用滑动手势仍然可以正常工作。

有没有人遇到和我一样的问题?

为了简化我的代码,它看起来像这样:

const Main = ({navigation}) => {
  const drawer = useRef(null);

  return(
    <DrawerLayoutAndroid
      ref={drawer}
      drawerWidth={300}
      drawerPosition={'left'}
      renderNavigationView={() => <MainDrawer />}
    >
      <TouchableOpacity onPress={() => drawer.current.openDrawer()} />
    </DrawerLayoutAndroid>
  );
}

版本信息如下。

{
  "name": "App",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "@babel/plugin-syntax-flow": "^7.18.6",
    "@bam.tech/react-native-make": "^3.0.3",
    "@flarelane/react-native-sdk": "^1.0.11",
    "@fortawesome/fontawesome-svg-core": "^6.1.2",
    "@fortawesome/free-regular-svg-icons": "^6.1.1",
    "@fortawesome/free-solid-svg-icons": "^6.1.1",
    "@fortawesome/react-native-fontawesome": "^0.2.7",
    "@react-native-community/async-storage": "^1.12.1",
    "@react-native-community/cameraroll": "^4.1.2",
    "@react-native-community/checkbox": "^0.5.12",
    "@react-native-community/geolocation": "^2.1.0",
    "@react-native-community/netinfo": "^9.3.0",
    "@react-native-community/slider": "^4.2.4",
    "@react-navigation/native": "^6.0.10",
    "@react-navigation/native-stack": "^6.6.2",
    "dependencies": "^0.0.1",
    "fbjs": "^3.0.4",
    "iamport-react-native": "^2.0.1",
    "install": "^0.13.0",
    "peer": "^0.6.1",
    "prop-types": "^15.8.1",
    "react": "17.0.2",
    "react-native": "0.68.2",
    "react-native-camera": "git+https://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d1b6b8a591b6b8a5b9a4b3ffb2bebc" rel="noreferrer noopener nofollow">[email protected]</a>/react-native-community/react-native-camera.git",
    "react-native-chart-kit": "^6.12.0",
    "react-native-config": "^1.4.6",
    "react-native-dotenv": "^3.3.1",
    "react-native-fade-in-out": "^1.0.6",
    "react-native-modal": "^13.0.1",
    "react-native-paper": "^4.12.1",
    "react-native-safe-area-context": "^4.2.5",
    "react-native-screens": "^3.13.1",
    "react-native-send-intent": "^1.3.0",
    "react-native-share": "^7.6.6",
    "react-native-splash-screen": "^3.3.0",
    "react-native-svg": "^12.3.0",
    "react-native-swipe-gestures": "^1.0.5",
    "react-native-view-shot": "^3.3.0",
    "react-native-webview": "^11.22.3",
    "recoil": "^0.7.3",
    "resolve-url": "^0.2.1",
    "source-map-resolve": "^0.6.0",
    "uglify-es": "^3.3.9",
    "uuid": "^8.3.2"
  },
  "devDependencies": {
    "@babel/core": "^7.17.10",
    "@babel/runtime": "^7.17.9",
    "@react-native-community/eslint-config": "^3.0.1",
    "babel-jest": "^28.1.0",
    "escape-string-regexp": "^5.0.0",
    "eslint": "^8.15.0",
    "eslint-plugin-react": "^7.29.4",
    "eslint-plugin-react-hooks": "^4.5.0",
    "jest": "^28.1.0",
    "metro-react-native-babel-preset": "^0.70.3",
    "react-test-renderer": "17.0.2"
  },
  "jest": {
    "preset": "react-native"
  }
}

最佳答案

我以前也遇到过完全相同的问题。我认为 DrawerLayoutAndroid 与堆栈导航器不兼容。我推荐 @react-navigation/drawer 中的 DrawerNavigator。 请引用以下链接。 https://reactnavigation.org/docs/drawer-navigator

关于android - [ReactNative]DrawerLayoutAndroid 在使用堆栈导航器后行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73615675/

相关文章:

javascript - 将 javascript 库导入 React Native

java - drawerLayout 内的按钮不起作用

android-fragments - 我如何从片段(kotlin)中打开片段

java - Android RecyclerView比较数据并根据它更新ui

android - 如何从 SQLite 数据库中存储和获取大文本数据?

android - ScriptIntrinsicBlur 生成不适当的模糊

android - Detox - DetoxManager 在运行时找不到 kotlin/jvm/functions/Function1

android - Android TTS 中是否支持 SSML?

xcode - Expo 未加载 (React-Native) -- 空 Expo SDK 版本

android - 打开第二个抽屉布局作为第一个抽屉布局的子抽屉布局