反应 - 用moment.js渲染

时间:2016-05-07 10:24:05

标签: reactjs momentjs

我想渲染一下:

<p>Some date: {moment('12-25-1995', 'MM-DD-YYYY')}</p>

并收到错误

Uncaught Invariant Violation: Objects are not valid as a React child (found: Mon Dec 25 1995 00:00:00 GMT+0100). If you meant to render a collection of children, use an array instead or wrap the object using createFragment(object) from the React add-ons. Check the render method of `MeetingComponent`.

我在尝试输出对象时看到这是一个常见的React响应。

最佳实践解决方案是什么?

1 个答案:

答案 0 :(得分:1)

您应该使用Moment的format函数返回一个字符串,否则您将尝试渲染一个Moment对象!

<p>Some date: {moment('12-25-1995', 'MM-DD-YYYY').format('MM/DD/YYYY')}</p>

让我更彻底地解释一下:moment构造函数可以处理两个参数,第一个是日期,第二个是作为第一个参数传递的日期格式。这与渲染日期无关,它只允许MomentJS创建日期的正确表示,并且在使用标准YYYY-MM-DD格式时可以省略第二个参数。

一旦你有了一个Moment对象,你可以用它来做一些巧妙的事情,比如添加天数,区分两个日期,格式化任何格式的日期等等......

如果您已经拥有所需格式的日期,则不需要使用Moment进行打印 - 您已经拥有正确的字符串。但您可以使用时刻更改日期格式并将其打印在其他日期:

<p>Some date: {moment('12-25-1995', 'MM-DD-YYYY').format('YYYY/MM/DD')}</p>