如何使用 React Native Stack Navigation 处理锁定方向

2024-01-07

我有一个在 iOS 和 Android 上运行的 React Native Expo 应用程序,使用具有两个视图的堆栈导航。第一个视图锁定为纵向屏幕方向

export class HomeScreen extends Component {
  componentWillMount() {
    ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT_UP);
  }

  render() {...
  }
}

第二个视图应该在纵向和横向屏幕方向上都可用:

export class DetailScreen extends Component {
  componentDidMount() {
    ScreenOrientation.lockAsync(
      ScreenOrientation.OrientationLock.ALL_BUT_UPSIDE_DOWN
    );
  }

  async componentWillUnmount() {
    await ScreenOrientation.lockAsync(
      ScreenOrientation.OrientationLock.PORTRAIT_UP
    );
  }

  render() {...
  }
}

这几乎按预期工作,但我有两个问题:

  1. 当第二次查看时 (DetailScreen)处于横向状态并且按下后退按钮,第一个视图(主屏幕)会在旋转回纵向方向之前以横向状态短暂显示。是否可以确保设备在返回之前已旋转至纵向?我尝试使用这样做async await in the componentWillUnmount里面的方法DetailScreen,但卸载组件后屏幕仍处于横向状态。
  1. 使用手势我可以导航回HomeScreen。但做这个手势的时候DetailScreen以横向显示时,HomeScreen也以横向显示。我该如何处理这个问题?是否可以以某种方式禁用此手势DetailScreen当处于横向方向时?

这个例子可以在这个 Expo Snack 中找到:https://snack.expo.io/HJ_nhkQKH https://snack.expo.io/HJ_nhkQKH


针对您的问题,我更新了世博会小吃:https://snack.expo.io/BJfXseXYB https://snack.expo.io/BJfXseXYB

第 1 部分:使用 NavigationEvents - onWillFocus

Part 2:

const RootStack = createStackNavigator(

  {
    Home: {
      screen: HomeScreen,
      navigationOptions: {
        gesturesEnabled: true,
      },
    },

    DetailView: {
      screen: DetailScreen,
      navigationOptions: {
        gesturesEnabled: false,
      },
    },
  },

  {
    initialRouteName: 'Home',
  }
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 React Native Stack Navigation 处理锁定方向 的相关文章

  • Mojave + Xcode 10 构建在 glog config.h、gflags/gflags.h 上失败

    我正在 Mac OS Mojave 和 Xcode 10 上测试 React Native 0 56 0 rc 2 Running react native init TestProject version 0 56 0 rc 2 cd T
  • 反应本机文本输入焦点

    我的应用程序中有一个表单 我希望用户能够通过单击 下一步 返回按钮转到下一个 TextInput 我的输入组件 export default class Input extends Component focusNextField next
  • React Native 中 SVG 中的定位图标

    背景 我正在尝试按照本教程将工具提示添加到react native svg图表中 教程链接 Link https levelup gitconnected com adding tooltip to react native charts
  • 如何在 React Native 中以表格格式显示数据?

    我需要在我的应用程序中以表格格式显示数据 我想要这样的东西 如何在表中第一个标题旁边添加下拉图标并设计与上图类似的代码 您可以使用数据表 from 反应本机纸库 https callstack github io react native
  • React Native:未找到哈希字符串“android-X”的目标

    我正在尝试开发我的第一个反应本机 https facebook github io react native Android应用程序 当我跑步时 sudo react native run android 我收到以下错误 JS server
  • useState 由于某种原因没有更新?

    当我尝试使用 axios 从后端 API 获取一些数据 并在由于某种原因获得结果后设置状态时 状态不会更新 当我尝试使用状态时 它只会向我显示一个空数组 但有趣的是当我console log res data 它会毫无问题地向我显示我的列表
  • 如何使用 React Native 下载文件?

    我正在使用 React Native 为 Android 和 iOS 构建一个应用程序 我试图让用户在单击按钮时下载 PDF 文件 反应本机文件下载 https www npmjs com package react native file
  • 如何在 React Native 中请求 iOS 存储权限?

    我找到了一个名为反应本机权限 https www npmjs com package react native permissions它提供了 Android 和 iOS 中的大部分权限 目前不支持 iOS 中的存储权限 如何在 React
  • React 导航抽屉中的 React Native 显示模式

    我有一个应用程序 我希望当用户单击某些导航路线时在当前页面上显示模式 而不是导航到完全不同的页面 我现有的代码是 const DrawerNavigator gt return
  • React Native:如何在组件中添加脚本标签

    我正在尝试在 React Native 应用程序的组件内添加标签 下面是我的代码 它似乎不起作用 谁能告诉我如何解决这个问题 import React Component from react import PropTypes from p
  • 如何在反应导航中将道具传递给“屏幕”/组件

    我对一般编程相当陌生 甚至对 JS 和 React Native 还比较陌生 但我已经为此工作了一整天 但我仍然没有弄清楚 所以我求助于 Stack Overflow 希望有人能帮助我可以帮我 基本上我想要完成的是设置其他Component
  • React-Native 博览会 POST Blob

    我正在使用 React Native 和 expo 并尝试通过 fetch api 发布 blob 图像 我对正文使用表单数据格式 并且我有下一个代码 const blob await response blob const form ne
  • 如何使用 Expo 播放 Youtube 视频

    我正在尝试使用反应本机 YouTube 组件 https github com inProgress team react native youtube在我的世博项目中 但是 我无法让它发挥作用 到目前为止 我所拥有的只是带有红色边框的黑屏
  • React Native 检查平板电脑或屏幕是否以英寸为单位

    我为平板电脑和移动设备建立了不同的渲染逻辑 我想知道是否有办法获取屏幕尺寸 以英寸为单位 或者甚至可能是任何模块自动检测设备是否是平板电脑 我没有直接使用尺寸 API 来获取屏幕分辨率的原因是 许多 Android 平板电脑的分辨率低于许多
  • React Native Expo 客户端网络请求失败

    网络请求失败 我尝试过允许端口连接 通过 sudo ufw 允许任何端口命令 但它没有帮助 fetch http 192 XXXXXX form user registration php method POST headers Accep
  • 当我在 Google Play 控制台上发布我的应用程序包时出现错误

    几天前 我在 Google Play Console 上发布了一个应用程序包 发现有关位置权限的错误 因此我填写了一份表格来解释为什么我们不在我的应用程序上使用该位置 但今天早上 他们给我发了一封电子邮件 说我的申请被拒绝了 邮件内容如下
  • FlatList 和 VirtualizedList 的区别

    我是 React Native 的新手 对两者之间的区别感到困惑FlatList and VirtualizedList So 两者有什么区别FlatList and VirtualizedList 我应该什么时候使用每个 The
  • WARN 没有为 React Native 中的关键 ReactNativeFirebaseMessagingHeadlessTask 注册任务?

    我已经使用创建了推送通知react native Firebase and react native push notification 我已经实现了所有类型的通知 如本地 日程背景和退出 但我已通过以下方式发送了推送通知FCM当我的应用程
  • React Native ios运行问题

    我是反应本机和运行新手yarn ios我的 React Native 项目不断失败并出现以下错误 构建失败 以下构建命令失败 编译C Users gift Library Developer Xcode DerivedData gainer
  • 尝试注册 RCTBridgeModule 类 RCTFileReaderModule

    尝试为名称 FileReaderModule 注册 RCTBridgeModule 类 RCTFileReaderModule 但该名称已由类 FileReaderModule 注册 尝试使用命令react native run ios在i

随机推荐

  • 等到 bootstrapTable 完全加载后再执行某些操作

    我有一个基于 javascript 的 bootstrapTable 可以动态生成表和数据 我在尝试将一些 CSS 样式和类应用于某些td正在生成的这个问题 https stackoverflow com questions 3033414
  • Haskell 与 Prolog 的比较 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Prolog 比 Haskell 能更好地解决哪些问题 这两种语言之间的主要区别是什么 Edit 是否有一个可以模仿 Prolog 功能的 Ha
  • 使用 Javascript/jQuery 打开选择?

    有没有办法使用 Javascript 和 jQuery 打开选择框
  • Rails:使用 will_paginate 每页显示 10 或 20 或 50 个结果如何?

    又是我 我需要使用 will paginate 插件在我的帖子列表中显示 10 或 20 或 50 个结果每页的结果数 你能帮我吗 Thanks 看起来OP也在这里问 http railsforum com viewtopic php id
  • iptables 转发和输入

    我有一个装有 Linux 电脑的家庭网络 所有电脑都运行着 iptables 我认为将我的 LAN 放在 Linux 网关 防火墙后面更容易 所以我在我的路由器和 LAN 之间放置了一台电脑 带有 fedora 没有 gui 并配置了 ip
  • Amazon S3 预签名 URL

    如果我将我的应用程序设置为生成用于访问 S3 媒体的预签名 URL 以便我可以将文件设置为私有 除非通过登录用户访问 那么如果有人有权访问 那么我这样说是否正确到 URL 在到期时间内 他们可以看到该文件 尽管它是 私有 的 因此 如果有人
  • 重载运算符和链接

    我有一个类 其中包含存储动态二维数组的对象 矩阵 我正在尝试重载 运算符 以便将 1 个矩阵复制到另一个矩阵上 以下作品 Square Matrix a b c a b 但是 这不起作用 a b c 它给了我以下错误1 与operator
  • QUANTEDA - 无效类“dfmSparse”对象

    我收到此警告消息 我使用这些数据 https github com kbenoit quanteda tree master data data char inaugural RData https github com kbenoit q
  • OpenCV 和 CMake 的链接问题

    我正在编写一个使用OpenCV的程序 安装在本地目录中 因为我在那台机器上没有root权限 并且我已经编写了相应的CMakeLists txt文件 我的问题是编译在链接阶段以不同的方式失败 我花了三个小时尝试了网上提出的所有不同的解决方案
  • 如何获取随机 json 数据并附加到 div 元素

    说这是我的 json imageSmall images employee jpgs employees abhishek 80x80 jpg imageBig images employee jpgs employees abhishek
  • 玩 securesocial - 开发者环境和单元测试

    我们在 Play 2 应用程序中使用 securesocial 模块进行身份验证 我有两个关于这个模块的问题 首先 有没有一种简单的方法可以禁用开发环境中的授权检查 最好不注释所有内容 SecureSocial SecuredAction注
  • 使用 Python 下载共享的 Google Drive 文件夹

    我的谷歌驱动器上有一个文件夹 其中只有 jpg 图像 我想使用该文件夹的共享链接将该文件夹中的所有图像下载到我的计算机上 到目前为止 我发现唯一有效的是下面的代码 但我只能让它适用于特定的共享文件 而不是整个文件夹 from google
  • 使用 TabItem 时如何将 TabLayout 与 ViewPager 同步

    我想用TabLayout with TabItem与以下代码
  • NuGet 包文件在构建期间未复制到项目内容

    我正在使用 VS2012 professional 和 NuGet Package Manager 版本 2 2 31210 构建 MVC4 Web 应用程序 我的解决方案中有多个项目 所有项目都共享我使用 NuGet 安装的各种包 我的项
  • 基于组件的MVC框架和基于动作的MVC框架

    您好 我曾使用过 JSF 它是一个基于组件的 MVC 框架 我知道很多 Web 项目都使用 Spring 作为其技术 而 Spring 属于 基于操作的 UI 框架 类别 我想知道这里有什么区别 哪一种更先进并为用户提供更多灵活性 一些优点
  • C 线程之间的消息传递

    我试图让线程 A 与线程 B 进行通信 我应该使用线程之间的消息传递来执行此操作 但我试图找到一些解释消息传递的示例源代码 有谁有一些解释消息传递的示例源代码 C 语言 的良好链接吗 虽然没有链接 但有很多方法可以实现这一点 首先是使用套接
  • C++中接口的多重继承

    我有一个对象接口和派生对象可能想要支持的开放式接口集合 An object class IObject getAttribute 0 A mutable object class IMutable setAttribute 0 A lock
  • 树的深度(哈斯克尔)

    我试图弄清楚如何计算 Haskell 中一般树的深度 我可以找出简单二叉树的解决方案 但不能找出具有任意数量叶子的一般树 这是我的二叉树代码 depth of a binary tree depth Tree a gt Int depth
  • Bootstrap 4 导航栏切换图标不出现

    Visit https jsfiddle net 8tpm4z00 https jsfiddle net 8tpm4z00 div class container div
  • 如何使用 React Native Stack Navigation 处理锁定方向

    我有一个在 iOS 和 Android 上运行的 React Native Expo 应用程序 使用具有两个视图的堆栈导航 第一个视图锁定为纵向屏幕方向 export class HomeScreen extends Component c