2017-05-02 22 views
6

私は現在の日付を私のcomponentsに出力したいと思います。コンソールで 私のコードは動作しますが、リアクトコンソールは言う:React JSは現在の日付を取得します

"bundle.js:14744キャッチされない例外RangeError:最大コールスタックサイズを超え":

import React from 'react'; 
var FontAwesome = require('react-fontawesome'); 

export class Date extends React.Component { 
    constructor() { 
     super(); 

     var today = new Date(), 
      date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate(); 

     this.state = { 
      date: date 
     }; 
    } 

    render() { 
     return (
      <div className='date'> 
       <FontAwesome name='calendar' />{this.state.date} 
      </div> 
     ); 
    } 
} 

私のコンポーネントは、そのように見えるが

ええ、私はかなり初心者ですが、多分誰かが私を助けることができます。私は数時間グーグルで行きました.-

Thx alot!

+0

JavaScriptは、 'new Date()'は 'Date'コンポーネントではなく、組み込みの' Date'クラスを参照するべきですか? FWIWは、この問題はReactとは何の関係もありません。 –

+0

ありがとう!今それは動作します:) –

答えて

11

問題は、コンポーネントクラスの名前をDateとすることです。あなたのクラス内でnew Date()を呼び出すと、作成すると予想されるDateのインスタンスが作成されません(これはおそらくthis Dateです)。コンポーネントクラスのインスタンスを作成しようとします。次に、コンストラクタは別のインスタンスと別のインスタンスと別のインスタンスを作成しようとします...あなたがスタック空間を使い果たし、あなたが見ているエラーを取得するまで。

Dateをクラス内で使用する場合は、CalendarDateComponentなどの異なる名前を付けてみてください。

JavaScriptが名前スコープをどのように扱うのか新しい名前付きエンティティを作成するときに、その名前のエンティティが既にスコープ内に存在する場合、その名前は前のエンティティの参照を停止し、新しいエンティティ。したがって、Dateという名前のクラス内でDateという名前を使用すると、Dateという名前はそのクラスを参照し、クラス定義を開始する前に存在したDateという名前のオブジェクトには適用されません。

+1

本当に素晴らしい説明+1: –

+1

本当に素敵な説明は、あまりにもありがとう!あなたは私の一日を救った。それは今うまく動作します:) –

関連する問題