这是一个奇怪的问题,但因为我真的很好奇,我想问.我有一段代码,当我启用远程调试时,它可以在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实例)时,为什么即使使用错误的格式它也能工作?因为当我安慰的时候.在Chrome中记录正常转换的日期.提前谢谢!

推荐答案

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

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

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

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

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

React-native相关问答推荐

React-Native:请纠正我对状态如何工作的误解 - 动态文本输入

如果没有启用远程调试器,React Native 代码将无法工作

如何将谷歌反向地理编码与 React Native Expo 结合使用?

TextInput 防止 ScrollView 滚动

警告:API 'variant.getMergeAssets()' 已过时 / Android Studio 3.3

create-react-native-app myproject和react-native init myproject之间的真正区别是什么

React Redux 使用带有连接组件的 HOC

NativeBase + Exponent Header

如何解决react-navigation 问题:Animated: `useNativeDriver` is not supported because the native animated module is missing.?

背景图像在react中不起作用

通过 ToolbarAndroid => onIconClicked 显示 DrawerLayoutAndroid

如何将 Tensorflow 与 react-native 一起使用?

如何将props传递给 React Navigation 导航器中的组件?

Unexpected token on "export default const"

由于对 sourcetree 的 husky 预推送,Git 推送失败

如何从 React-Native 中的另一个类调用函数?

React Native 模块中的依赖注入

在 React Native 中检测向左滑动

react-native 开始给出 Invalid 正则表达式无效错误

React Native:任务':app:transformDexArchiveWithExternalLibsDexMergerForDebug'的执行失败