【问题标题】:Persistent React-Native error that goes away with Remote Debugging enabled启用远程调试后会消失的持久性 React-Native 错误
【发布时间】:2019-01-31 06:50:17
【问题描述】:

我正在构建一个 React-Native 应用程序,每当我在我的 Android 模拟器上运行它时,我都会收到以下错误:

对象作为 React 子对象无效(找到:带键的对象 {$$typeof, type, key, ref, props, _owner, _store})。如果你打算 渲染一组孩子,请改用数组。 throwOnInvalidObjectType D:\rn\manager\node_modules\react-native\Libraries\Renderer\ReactNativeRenderer-dev.js:7436:6

因为这个错误对我来说毫无意义,所以我决定在 Chrome 中启用“远程调试 JS”,看看是否能得到我理解的错误。但是启用远程调试后,错误就消失了。

如果我构建项目并在真实设备上安装应用程序,错误会再次出现。

但我感觉自己陷入了第 22 个问题,因为如果我尝试调试,我不会出错,如果我关闭调试,我会出错。

有没有办法解决这个问题?

谢谢!

【问题讨论】:

  • 由于您没有提供minimal reproducible example,因此很难知道出了什么问题,但这里有一些开始。启用远程调试后,某些渲染可能会变慢。如果您在应用程序的某个点进行条件渲染,那么在缓慢的速度下,您最终可能会得到正确的条件并且渲染得很好,但是使用缩小的代码和更快的渲染速度,您最终可能会遇到错误的条件。这也可能是因为 setState 的错误使用,因为它是异步的。
  • 遇到同样的问题,我开始删除导入,其中一个导致了这种情况。还在调试中

标签: react-native react-native-android


【解决方案1】:

错误提到您在 render() 方法中使用了不应该使用的对象。由于您没有发布任何代码,因此您可以执行以下操作: 继续从您的 render() 方法中删除元素,直到您不再收到错误。一旦它消失了,开始放回代码,直到你再次遇到错误。导致错误的代码将是或返回一个对象,例如可能是一个拼写错误导致返回一个对象而不是一个字符串。

【讨论】:

    【解决方案2】:

    TL;DR:停止使用 firebase 并改用 react-native-firebase

    对我来说,问题不在于我的任何组件或类中的渲染方法。我在尝试上述答案后意识到,我基本上删除了所有文件,只剩下一个文件。我将渲染方法更改为在一个视图中显示文本,但仍然出现错误。

    然后我开始一一删除我在那个文件里面导入的模块,发现是firebase模块卸载了firebase,安装了react-native-firebase。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-31
      • 2022-10-16
      • 2019-06-17
      • 2021-04-23
      • 2010-09-27
      • 2014-12-24
      • 2017-02-03
      • 2017-04-25
      相关资源
      最近更新 更多