【问题标题】:Moment validations work only on some devices in React NativeMoment 验证仅适用于 React Native 中的某些设备
【发布时间】:2019-07-04 04:40:26
【问题描述】:

我的 React Native 应用程序中有以下代码。

const year10To18 = (val) => {
  const birthDate = moment(new Date(val));
  const today = moment();
  const difference = today.diff(birthDate, 'years');
  return difference >= 10 && difference <= 18;
};

此验证在我的 android 设备上正常工作,但在其他设备上,这不起作用?这可能是什么问题?

注意:我发现了这个问题。如果 React Native 调试器打开,那么验证工作正常。但没有它,验证将不起作用。

还不知道原因。

【问题讨论】:

    标签: javascript reactjs react-native momentjs


    【解决方案1】:

    这是由不同的 JavaScript 环境引起的。查看文档here

    JavaScript 运行时

    使用 React Native 时,您将运行 JavaScript 两种环境下的代码:

    • 在大多数情况下,React Native 将使用 JavaScriptCore,它是支持 Safari 的 JavaScript 引擎。请注意,在 iOS 上,JavaScriptCore 由于没有可写的可执行内存,不使用 JIT iOS 应用。
    • 使用 Chrome 调试时,所有 JavaScript 代码都在 Chrome 内部运行,通过 WebSockets 与本机代码通信。铬合金 使用 V8 作为其 JavaScript 引擎。

    虽然这两种环境非常相似,但您最终可能会遇到一些问题 不一致。我们可能会尝试其他的 未来的 JavaScript 引擎,所以最好避免依赖 任何运行时的细节。

    我认为问题可能出在日期创建上。而不是new Date(val),尝试直接用moment创建一个日期。例如:moment(2019-30-06, "YYYY-DD-MM")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-10
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 2018-02-19
      • 1970-01-01
      相关资源
      最近更新 更多