【问题标题】:Some code only works while chrome debugger is active某些代码仅在 chrome 调试器处于活动状态时才有效
【发布时间】:2016-06-10 04:10:26
【问题描述】:

我正在开发一个 react-native 应用程序,我正在尝试使用 moment 格式化日期。

日期看起来像“02-16-2016 09:04:23”

function formatTime(date){

  var formattedDate = moment(date).format('MM:ss A');

  return formattedDate;
}

如果 chrome 调试器处于活动状态,则可以正常工作。但是如果我禁用它,我得到的只是“无效日期”

与我正在使用的解码功能相同

var that = this;
MessagesService.getMessageBody(selectedMessage)
    .then(function(messageBody){

        var decodedData = window.atob(messageBody.messages);

        that.setState({
          messageBody: decodedData
        })
    })
    .catch(function(err){
        console.log(err);
    })

显示解码后的数据

<Text> Body: {this.state.messageBody} </Text>

并显示日期

<View style = {[MessageStyles.senderItem, MessageStyles.date]}>
       <Text>
          {this.formatTime(message.createDateTime)}
       </Text>
</View>

也许这是在本机反应中做到这一点的不好方法?还在学习,所以我可能会做一些不好的练习。

【问题讨论】:

  • 请编辑您的问题以包含 MVCE 而不仅仅是 sn-ps。事实上,很难提供帮助,因为我们无法在不猜测您的其余设置的情况下轻松重现该问题。 (我怀疑这是一个moment.js问题顺便说一句,可能是反应或其他的东西。)
  • 嗯,在 React Native 中添加 MVCE 有点困难
  • 您能帮忙解决这个问题吗?

标签: node.js react-native momentjs


【解决方案1】:

我最近了解到,在使用 chrome 调试器时,react native 使用不同的 JS 引擎。调试时使用 chrome JS 引擎,否则使用 JavaScriptCore。根据这篇文章

http://ruoyusun.com/2015/11/01/things-i-wish-i-were-told-about-react-native.html

但是对于日期的实际问题,JavaScriptCore 引擎似乎不喜欢使用 - 来解析日期。我必须使用正则表达式将 - 替换为 /,然后我的所有日​​期操作都可以正常工作。

02-16-2016 09:04:23 被视为无效

02/16/2016 09:04:23 被认为是有效的

【讨论】:

  • 你能分享一下正则表达式吗?
  • 其实你的回答帮我解决了这个问题。我花了2个小时终于明白了这一点。谢谢大声笑
猜你喜欢
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多