react-native – 如果没有启用远程调试器,React Native代码将无法运行

前端之家收集整理的这篇文章主要介绍了react-native – 如果没有启用远程调试器,React Native代码将无法运行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一个奇怪的问题,但由于我对此非常好奇,我想问一下.当我启用远程调试时,我有一段在iOS模拟器中工作的代码,但没有它就会停止工作.这是代码
let filtered = []
      let dueDate
      const dateNow = new Date(Date.now())

      for (let item of this.props.listData) {
        dueDate = new Date(item.dueDate)
        if (!item.paid && (dueDate < dateNow)) {
          filtered.push(item)
        }
      }
      if (filtered.length > 0) {          
        this.setState({
          dataSource: this.state.dataSource.cloneWithRows(filtered)
        })
      }

(item.dueDate是一个类似“12.02.2016”的字符串)

如果我以正确的格式提供日期(如ISO“2016-02-12”),显然代码可以工作(并且可以工作).我感兴趣的是,当我启用远程调试(启动Google Chrome实例)时,为什么即使格式错误也能正常工作?因为当我在控制台.log中记录Chrome中的日期时,它们会正常转换.提前致谢!

这很可能是由于设备上的JavaScript执行环境与远程调试器之间的细微差别造成的.

在这种情况下,Date构造函数似乎接受Chrome远程调试环境中的特定于语言环境的日期格式,但不接受设备上的日期格式.这可能是由于您的计算机的区域设置已设置为使用dd.MM.yyyy格式的文化,而模拟器设置为其他内容,例如en-US. ISO格式适用于两者,因为无论语言环境如何都支持它.

当您在设备或模拟器上运行代码时,代码将在设备本身的JavaScriptCore中执行.这是React Native在内部用于运行应用程序脚本的JavaScript引擎

当您打开远程调试时,React Native打包器将改为执行计算机Chrome的JavaScript引擎V8中的代码,并通过WebSockets在浏览器和设备/模拟器之间发送消息.

您遇到了许多使React Native中的远程调试不可靠的边缘情况之一.您应该始终在没有调试器的情况下测试真实设备上的所有功能.

猜你在找的React相关文章