【问题标题】:Detect when a NativeModule is running in React-native检测 NativeModule 何时在 React-native 中运行
【发布时间】:2021-08-04 06:57:46
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android ios react-native react-native-native-module


    【解决方案1】:

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

    1. 在您的代码中声明一个布尔属性isVisible,并在您的组件被初始化或销毁时分别将其设置为truefalse。对于 iOS 中的UIViewController,您可以为此使用viewWillAppearviewWillDisappear
    2. isVisible 属性创建一个getter 并将其导出到Javascript。 您可以从此链接获取帮助: https://reactnative.dev/docs/native-modules-ios#export-a-native-method-to-javascript
    3. 从您的 react 本机代码中调用 getter 以检查 NativeModule 是否在屏幕上可见。

    【讨论】:

      【解决方案2】:
      1. 确保以正确的方式处理应用状态。
      2. 您可以使用 RCTEventEmitter 发送事件并手动管理它们
      3. 使用回调或承诺并更改应用中的状态

      【讨论】:

        猜你喜欢
        • 2019-05-29
        • 1970-01-01
        • 2023-01-31
        • 1970-01-01
        • 2018-05-11
        • 2019-11-20
        • 2018-05-22
        • 2016-04-16
        • 1970-01-01
        相关资源
        最近更新 更多