React Native:执行UI块时抛出异常:返回reactNavSuperviewLink

时间:2016-05-21 01:07:51

标签: react-native

在我的IOS应用程序将React Native从0.14升级到0.26之后,我一直得到这个例外:

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

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

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

enter image description here

5 个答案:

答案 0 :(得分:2)

当我试图解决这个问题时,在React Native文档中有一个声明,他们知道NavigatorIOS的百万个错误但不再处理该组件,因为facebook没有在内部使用它,他们指出to this library作为更好的NavigatorIOS的替代方案。 (当时这个库只提供了NavigatorIOS的替换,现在他们添加了更多宝石)我打算使用它,但后来我读了他们的导航器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以来,很多人都很满意,我觉得他们所实现的(未实现的)应该是安全的。至少它适用于我的应用程序,没有发生进一步的错误。

答案 1 :(得分:2)

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

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

不要急于通过它,否则你会发现更多这样的问题...记得当地人是年轻人,如果你是鲁莽的话,事情就会破裂

答案 2 :(得分:1)

在@Mark的后续帖子中指出该行后,我最终得到了一个不同的错误Cannot adjust current top of stack beyond available views。读取另一个线程(React-native on IOS: cannot adjust current top of stack beyond available views)后发现我没有正确导入正在使用的组件。虽然这对我来说是“用户错误”,但也许这可能解释了其他有关此错误的说法。

答案 3 :(得分:0)

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

之前:<TabBarIOS></TabBarIOS>

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

希望它有所帮助。

答案 4 :(得分:0)

在我的情况下,由于iPhone模拟器中先前缓存的导航器数据而出现此问题。

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