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 который существовал до начала определения класса.