javascript - 以编程方式关闭所有 React Native 模式警报/对话框?

标签 javascript android ios react-native

在我们的应用程序中,如果我们的 API 调用之一返回用户未经授权,我们会假设用户已注销并将他们带回登录屏幕。由于基于网络套接字等的后台刷新,这可能随时发生……包括当屏幕上出现任意数量的 native UI 对话框样式组件时,包括警报、Android 日期/时间选择器、iOS 操作表、相机选择器等. 有没有办法确保在发生此类事件时消除这些事情?

不确定所有这些,但我可以确认在从 React Navigation 中的堆栈中关闭 View 后,警报、操作表和相机选择器 UI 仍保留在 iOS 的屏幕上。在某些情况下,有人建议创建一个纯 JavaScript 组件来替换其中一些 native 模态(比如在 View 顶部的叠加层,它看起来像一个警报,但实际上只是您当前 View 的 subview )。然而,100% 替换这些原生模态组件似乎是不可能/非常困难的。即使我替换了警报和操作表,我仍然只剩下相机/照片选择器,我真的不想构建我自己的版本。

最佳答案

这可能会有所帮助 - React Native v0.50.0 向 Modal 添加了一个 onDismiss Prop ,它允许您传递一个函数,该函数将在模式被关闭后调用。

在此处查看更新的文档:http://facebook.github.io/react-native/releases/0.51/docs/modal.html#ondismiss

如果你很好奇,这里是进行更改的 PR:https://github.com/facebook/react-native/commit/a389ffbd84224b583e71cf7c1468409cbc91ec8e

关于javascript - 以编程方式关闭所有 React Native 模式警报/对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46696490/

相关文章:

ios - 在 iOS Swift 中将 NSDate 转换为字符串

javascript - 如何在后续保存时重新启动 Gulp 任务?

android - 用于启动应用程序的 Activity 不存在!确保它存在

ios - CFBundleGetFunctionPointerForName 和 dlsym 对于导出函数返回 NULL

android - 以编程方式在主屏幕上创建文件夹?

android - IOS 到 Android,反之亦然 TCP 服务器客户端连接使用套接字

ios - Swift Combine compactMap 不起作用(Xcode 13)

javascript - 如何检测文本区域何时失去焦点并在单击特定元素时防止其失去焦点?

javascript - AngularJS:如何将对象映射到 HTML 属性

javascript - 加载动态添加的输入字段的值