React 原生行为在模拟器/设备上/有或没有Chrome调试时有所不同

React Native behavior different in simulator / on device / with or without Chrome debugging

本文关键字:Chrome 有所不同 调试 原生 模拟器 React      更新时间:2023-09-26

我正在构建一个 React Native 应用程序(目前仅限 iOS),我发现了一个非常讨厌的错误,只有在 1.) 在真实设备上运行时才会表现出来,以及 2.)在没有 Chrome 调试的情况下运行。(哎哟,对吧?

我正在使用带有选项卡的 react-native-router-flux,当我点击加载新选项卡路由 ( Actions.tabRouteName 的按钮时,屏幕变为空白。正如我所说,它在模拟器中运行良好,当我启用Chrome调试时,也可以在设备上正常工作。

我尝试过的其他事情:在另一台设备上运行,重新加载JS,在Xcode中重建应用程序。

在这些不同的运行案例中,行为会有所不同的原因是什么?

谢谢。

更新:这似乎与动画和路线切换有关。我在这个Github问题中发布了更多详细信息。我还发现了轶事支持其他人在此 Github 问题中遇到类似的调试问题的想法。

在这些不同的运行案例中,行为会有所不同的原因是什么?

这是因为当您在 Chrome 中使用远程调试时,它实际上在浏览器中运行 RN 应用程序(然后使用 V8 JavaScript 引擎),并通过 WebSockets 与模拟器(或设备)进行通信。当它在未启用远程调试的情况下运行时,它将使用 JavaScript Core。这些环境之间存在许多差异,这些差异可能会导致不一致,因此不要太依赖仅在启用JS调试的情况下运行应用程序,它可能会给您带来错误或隐藏实际上会导致实际在真实设备上出现问题的错误。