我想在组件中输出当前日期。在控制台中,我的代码可以工作,但React控制台显示:
bundle. js:14744未捕获范围错误:超出最大调用堆栈大小
我的组件如下所示:
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>
);
}
}
7条答案
按热度按时间sf6xfgos1#
问题是您将组件类命名为
Date
,当您在类中调用new Date()
时,它不会创建您期望创建的Date
的示例(很可能是thisDate
)-它会尝试创建你的组件类的一个示例。然后构造函数会尝试创建另一个示例,再一个示例,另一个示例......直到堆栈空间用完,出现所看到的错误。如果你想在你的类中使用
Date
,试着给你的类命名一些不同的名字,比如Calendar
或DateComponent
。原因是JavaScript处理名称范围的方式:每当你创建一个新命名的实体时,如果作用域中已经有一个实体使用这个名称,那么这个名称将停止引用以前的实体,而开始引用你的新实体。因此,如果你在一个名为
Date
的类中使用名称Date
,名称Date
将引用该类,而不是引用在类定义开始之前存在的任何名为Date
的对象。i86rm4rw2#
备选案文1:如果你想创建一个通用实用函数,那么你可以使用
并通过将其导入为
备选案文2:或直接在类中定义和使用
3vpjnl9f3#
完整日期和时间:
仅提取月份(当前):
仅浸提天数:
仅提取年份:
ndasle7k4#
你可以用反作用矩软件包
在文件中输入下一行:
qybjjes15#
简单的解决方案是
omhiaaxx6#
我小小的进步
nue99wik7#
这对我很有效