React-Native:除非单击屏幕,否则调试时应用程序卡住

Posted

技术标签:

【中文标题】React-Native:除非单击屏幕,否则调试时应用程序卡住【英文标题】:React-Native: App stuck when debugging unless screen is clicked 【发布时间】:2017-01-10 13:55:56 【问题描述】:

我的 android 应用由两个屏幕组成:“登录”和“仪表板”。 登录工作正常,但仪表板是一个麻烦制造者。

第一个问题

在登录屏幕上,我可以打开调试菜单,一切正常。当我切换到仪表板屏幕时,我无法再打开菜单。如果我在登录屏幕中启用了检查器,然后转到仪表板屏幕,检查器就会消失。

第二个问题

当我在没有附加调试器的情况下运行应用程序时,仪表板中没有数据,但登录照常工作。

当我附加调试器时,应用程序会“卡住”很多。 通过在“卡住”时单击屏幕(带有附加的调试器),应用程序向前迈进了一步 - 当我经常单击屏幕时,我最终得到了我期待的所有数据! 没有设置断点,我根本不需要使用调试器,只需附加它即可。

ios 对应的似乎工作得非常好。

这里有什么问题?

更新:

我正在使用 React-Native 0.31.0

澄清一下:我的问题不在于调试器本身。我的问题是,没有调试器我没有得到任何数据,但是当附加了调试器时我得到了所有数据(仅在 Android 上!)。

【问题讨论】:

您使用的是哪个 RN 版本? >0.29 你可以尝试运行 react-native log-android 它为你提供相同的工具 另外:你能显示一些代码吗?很难猜出你的解决方案 嗯...这个项目已经相当大了,所以我不知道我可以显示代码的哪一部分(不能只是复制粘贴所有)。 我也面临同样的问题.. 在 Android 上测试。 @purezen 请查看我发布的答案。也许它会对你有所帮助,即使我发现很难描述问题是什么,因为已经过去了一段时间。 【参考方案1】:

我相信已经弄清楚问题的核心是什么。

在调试 React-Native 应用程序时,代码由支持更多 javascript 的 Chrome “运行”。 (我发现很难找到合适的词......)

来自React-Native documentation:

在 iOS 模拟器和设备、Android 模拟器和设备上 React Native 使用 JavaScriptCore,它是支持 苹果浏览器。在 iOS 上,JSC 不使用 JIT,因为没有可写性

iOS 应用程序中的可执行内存。 使用 Chrome 调试时,它会运行其中的所有 JavaScript 代码 Chrome 本身并通过 WebSocket 与本机代码通信。那么你 正在使用 V8

在我的例子中,有些函数使用了for of 循环或array.some 语法。

我不确定,目前支持什么,因此您(遇到此问题的人)可能想要更新您的 react-native 版本。

请看this ECMAScript Compatibility table

【讨论】:

以上是关于React-Native:除非单击屏幕,否则调试时应用程序卡住的主要内容,如果未能解决你的问题,请参考以下文章

除非我单击每个单元格,否则年份的下拉菜单不会显示

除非选择了项目,否则Visual Studio不会保存构建更改

除非单击鼠标,否则按钮不会重新启用的奇怪问题

除非在使用 pdfrw 填写后单击,否则 PDF 表单数据不可见

除非鼠标移动,否则 Java 物理循环(按间隔重绘)不稳定

css 除非单击地图,否则禁用嵌入式Google地图上的滚轮。