2017-05-02 2 views
6

현재 날짜를 내 componenent에 출력하고 싶습니다. 내 코드가 작동 콘솔에서 하지만 반작용 콘솔은 말한다 :React JS get 현재 날짜

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> 
     ); 
    } 
} 
:

내 구성 요소처럼 보인다 "bundle.js : 14,744 catch되지 않은 오류 RangeError가 최대 호출 스택의 크기가 초과"

그래, 나는 내가 초보자 인 것을 알고 있지만 어쩌면 누군가 나를 도울 수있다. 나는 몇 시간 씩 인터넷 검색을했다 .-

Thx alot!

+0

JavaScript는'new Date()'가'Date' 클래스가 아니라 내장 된'Date' 클래스를 참조해야한다는 것을 어떻게 알 수 있습니까? FWIW,이 문제는 React와는 아무 관련이 없습니다. –

+0

고마워요! 이제 작동 :) –

답변

11

문제는 구성 요소 클래스의 이름을 Date으로 지정한다는 것입니다. 클래스 내에서 new Date()으로 전화하면 생성하려고하는 Date (예 : this Date) 인스턴스가 생성되지 않고 구성 요소 클래스의 인스턴스가 만들어집니다. 그런 다음 생성자는 다른 인스턴스와 다른 인스턴스 및 다른 인스턴스를 만들려고 시도합니다 ... 스택 공간이 부족 해지면 오류가 발생합니다.

Date을 수업 시간에 사용하려면 Calendar 또는 DateComponent과 같이 다른 이름을 지정하십시오.

JavaScript가 이름 범위를 처리하는 방법입니다. 새 명명 된 엔터티를 만들 때마다 해당 이름의 엔터티가 이미 있으면 해당 이름이 이전 엔터티를 참조하는 것을 중지하고 새로운 엔티티. 따라서 이름이 Date이고 이름이 Date 인 경우 이름이 Date 인 경우 해당 클래스를 참조하고 클래스 정의를 시작하기 전에 있었던 Date이라는 객체는 참조하지 않습니다.

+1

정말 끝내주는 설명 +1 : –

+1

정말 좋은 설명, 정말 고마워! 너는 내 하루를 구했다. 그것은 지금 잘 작동 :) –