1

因此,我在应用程序(Android 和 iOS 特定)中使用了一些不同的 NativeModules 来播放视频等。这意味着屏幕由本机代码接管,例如。Java 或 Swift 及其各自的 ViewController 控制视图而不是 React-Native。

这一切都很好,应该可以正常工作,但我确实需要检测 NativeModule 是否正在运行,例如。它的观点或RN的观点正在显示。如果我使用{ useIsFocused } from '@react-navigation'它无法检测到 NativeModule 何时接管视图,它总是说我激活 NativeModule 的视图是 inFocus。

即使覆盖了本机视图,{ AppState } from 'react-native'它也总是显示相同。active

有人找到解决此问题的方法吗?

4

2 回答 2

1

如果您将自己的自定义组件用作 NativeModule,那么您可以

  1. isVisible在您的代码中声明一个布尔属性并将其设置为truefalse分别在您的组件被初始化或销毁时。在UIViewControlleriOS 中,您可以使用viewWillAppearviewWillDisappear用于此目的。
  2. 为属性创建一个 getterisVisible并将其导出到 Javascript。您可以从此链接获取帮助: https ://reactnative.dev/docs/native-modules-ios#export-a-native-method-to-javascript
  3. 从你的 react native 代码中调用 getter 来检查 NativeModule 是否在屏幕上可见。
于 2021-08-05T03:00:58.170 回答
1
  1. 确保以正确的方式处理应用程序状态。
  2. 您可以使用 RCTEventEmitter 发送事件并手动管理它们
  3. 使用回调或承诺并更改应用中的状态
于 2021-08-04T09:21:11.653 回答