我想在我的组件中输出当前日期。在控制台中,我的代码可以工作,但React控制台显示:
"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>
);
}
}
是啊,我知道我是个不错的初学者,但也许有人能帮我。我用谷歌搜索了几个小时。
太感谢了!
发布于 2017-05-03 02:02:57
您的问题是您将组件类命名为Date
。当您在您的类中调用new Date()
时,它不会创建您希望它创建的Date
的实例(很可能是this Date
)-它会尝试创建您的组件类的实例。然后构造函数将尝试创建另一个实例、另一个实例和另一个实例...直到您耗尽堆栈空间并得到您所看到的错误。
如果您想在类中使用Date
,请尝试将您的类命名为不同的名称,例如Calendar
或DateComponent
。
这样做的原因是JavaScript如何处理名称作用域:每当您创建一个新命名的实体时,如果作用域中已经有一个具有该名称的实体,则该名称将停止引用以前的实体,而开始引用您的新实体。因此,如果在名为Date
的类中使用名称Date
,则名称Date
将引用该类,而不是引用在类定义开始之前存在的任何名为Date
的对象。
发布于 2020-02-04 12:03:34
您可以使用react-moment包
-> https://www.npmjs.com/package/react-moment
在文件中放入下一行:
import moment from "moment";
date_create: moment().format("DD-MM-YYYY hh:mm:ss")
发布于 2021-03-11 17:46:53
简单的解决方案是
{new Date().toLocaleString() + ''}
https://stackoverflow.com/questions/43744312
复制相似问题