【问题标题】:React Native: Exception thrown while executing UI block: put reactNavSuperviewLink backReact Native:执行 UI 块时抛出异常:将 reactNavSuperviewLink 放回去
【发布时间】:2016-09-18 09:08:23
【问题描述】:

在我将 IOS 应用的 React Native 从 0.14 升级到 0.26 后,我不断收到此异常:

*** -RCTNavigator reactSuperview 中的断言失败,/path_to_app/node_modules/react-native/React/Views/RCTNavigator.m:461 2016-05-20 20:55:43.217 [error][tid:main][RCTUIManager.m:1100] 执行 UI 块时抛出异常:放回 reactNavSuperviewLink

在升级之前我没有这个问题。我正在使用 NavigatorIOS。

非常感谢任何有关如何修复它或在调试时查看什么的建议

【问题讨论】:

  • 你解决了这个@mark吗?
  • @ChrisEdwards 刚刚发布了我的解决方案,希望对您有所帮助

标签: react-native


【解决方案1】:

当我试图解决这个问题时,在 React Native 文档中有一个声明,他们知道 NavigatorIOS 存在数百万个错误,但由于 facebook 内部没有使用它,因此不再处理该组件,他们指出to this library 作为更好的 NavigatorIOS 的替代品。 (当时这个库只提供了 NavigatorIOS 的替代品,现在他们添加了更多的 gem)我打算使用它,但后来我读到他们的 Navigator does not synchronize between JS and native,这就是为什么我决定停止使用该库而不是使用该库的原因React的NavigatorIOS中JS和native的同步,解决了这个问题。

我最终在 node_modules/react-native/React/Views/RCTNavigator.m 中注释掉了 RCTAssert(!_bridge.isValid || self.superview != nil, @"put reactNavSuperviewLink back");

我知道这是一种变通方法,但是由于 React Native 批准了this library,并且很多人对此感到满意,我觉得镜像他们实现(未实现)的内容应该是安全的。至少它适用于我的应用程序并且没有发生更多错误。

【讨论】:

  • 嗨,马克,欢迎来到 StackOverflow,感谢您的回答。您介意编辑您的帖子以包含相关代码而不是屏幕截图吗?其他人从图像中复制代码并不容易;)谢谢!
【解决方案2】:

好的,不,任何包含“注释掉库的这一部分”的答案都是错误的。干净利落。

您遇到的问题是您的 navigatorIOS 设置错误。确保您没有任何嵌套/循环导航器并清理您的代码。

不要急于求成,否则你会发现更多这样的问题......记住,react native 是年轻的,如果你鲁莽的话,事情就会崩溃

【讨论】:

  • 我同意注释掉导致错误的行通常是危险的,但我添加了一个解释,为什么我认为在这种情况下它是可以的。然而你错了,这个问题只能来自错误地设置 NavigatorIOS,NavigatorIOS 非常错误,经常导致它的问题。
  • 您的第一句话提出了要求,除了“简单明了”之外没有提供任何理由。不应该那么很难证明这不是一个好主意,但是如果它是如此“简单明了”,那么您不应该提供支持性论据吗?只是做出断言?而不是简单地声称它是“错误的”,为什么不列举这种方法的缺点。这将是一项宝贵的贡献。
【解决方案3】:

我在使用没有孩子的TabBarIOS 时遇到了这个问题。我通过添加一个空视图来修复它。

之前:<TabBarIOS></TabBarIOS>

之后:<TabBarIOS><View /></TabBarIOS>

希望对你有帮助。

【讨论】:

    【解决方案4】:

    在我的例子中,这个问题是由于之前在 iPhone 模拟器中缓存的导航器数据造成的。

    如果缓存数据是问题切换到另一个模拟器设备或删除模拟器中的应用程序将解决问题。

    【讨论】:

      【解决方案5】:

      按照@Mark 的后续帖子中的说明注释掉该行后,我最终得到了另一个错误Cannot adjust current top of stack beyond available views。在另一个线程 (React-native on IOS: cannot adjust current top of stack beyond available views) 上阅读,结果发现我没有正确导入正在使用的组件。虽然这被证明是我的“用户错误”,但也许这可以解释这个错误的其他原因。

      【讨论】:

        猜你喜欢
        • 2017-10-05
        • 2020-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-22
        • 1970-01-01
        • 2012-11-14
        相关资源
        最近更新 更多