2016-05-07 10 views
1

でレンダリング:が反応 - 私はこれをレンダリングしようとしていますmoment.js

<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`. 

がレスポンスを反応します。

このためのベストプラクティスソリューションは何ですか?

答えて

1

モーメントのformat関数を使用して文字列を返す必要があります。そうでなければ、モーメントオブジェクトをレンダリングしようとしています。

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

は、私はより徹底的にこれを説明してみましょう: momentコンストラクタは2つのパラメータを処理することができ、日付されて第一及び第二は、日付の書式は、最初のパラメータとして渡されます。これは日付のレンダリングとは無関係です。標準のYYYY-MM-DD形式を使用する場合は、MomentJSで日付の正しい表現を作成するだけで、2番目のパラメータは省略できます。

あなたはモーメントオブジェクトを持っていたら、あなたは、このようなあなたはすでに日付を持っている場合は

...など、任意の形式で日付をフォーマットし、二つの日付を差分の日数を追加するなど、それにいくつかのきちんとしたものを、行うことができますあなたの望むフォーマットで、モーメントを使って印刷する必要はありません。すでに正しい文字列があります。しかし、瞬時にあなたの日付のフォーマットを変更して、それを印刷することができます:

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

大変ありがとうございます! –

+1

良い答えですが、実際にここで言及したものに加えて、瞬時のコンストラクタ、特に厳密なモードとロケールにはいくつかのオーバーロードがあることに注意してください。 http://momentjs.com/docs/#/parsing/ –

関連する問題