React JS получить текущую дату
Я хочу вывести текущую дату в моем компоненте. В консоли мой код работает, но консоль React говорит:
"сверток.js: 14744 Uncaught 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 много!
1 ответов
ваша проблема в том, что вы называете свой класс компонентов Date
. Когда вы звоните new Date()
в вашем классе он не создаст экземпляр Date
вы ожидаете, что он создаст (что, вероятно,этой Date
) - он попытается создать экземпляр вашего класса компонентов. Затем конструктор попытается создать еще один экземпляр, и еще один экземпляр, и еще один экземпляр... Пока у вас не закончится пространство стека и не появится ошибка, которую вы видите.
если вы хотите использовать Date
в вашем классе, попробуйте назвать свой класс что-то другое, например Calendar
или DateComponent
.
причина этого заключается в том, как JavaScript имеет дело с областью имен: всякий раз, когда вы создаете новую именованную сущность, если уже есть сущность с этим именем в области, это имя перестанет ссылаться на предыдущую сущность и начнет ссылаться на вашу новую сущность. Поэтому, если вы используете имя Date
в классе с именем Date
имя Date
будет ссылаться на этот класс, а не на любой объект с именем Date
который существовал до начала определения класса.