在我们的应用程序中,如果我们的 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/