我想渲染一下:
<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响应。
最佳实践解决方案是什么?
答案 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>