reactjs React JS获取当前日期

k4aesqcs  于 2023-02-22  发布在  React
关注(0)|答案(7)|浏览(268)

我想在组件中输出当前日期。在控制台中,我的代码可以工作,但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>
        );
    }
}
sf6xfgos

sf6xfgos1#

问题是您将组件类命名为Date,当您在类中调用new Date()时,它不会创建您期望创建的Date的示例(很可能是this Date)-它会尝试创建你的组件类的一个示例。然后构造函数会尝试创建另一个示例,再一个示例,另一个示例......直到堆栈空间用完,出现所看到的错误。
如果你想在你的类中使用Date,试着给你的类命名一些不同的名字,比如CalendarDateComponent
原因是JavaScript处理名称范围的方式:每当你创建一个新命名的实体时,如果作用域中已经有一个实体使用这个名称,那么这个名称将停止引用以前的实体,而开始引用你的新实体。因此,如果你在一个名为Date的类中使用名称Date,名称Date将引用该类,而不是引用在类定义开始之前存在的任何名为Date的对象。

i86rm4rw

i86rm4rw2#

备选案文1:如果你想创建一个通用实用函数,那么你可以使用

export function getCurrentDate(separator=''){

let newDate = new Date()
let date = newDate.getDate();
let month = newDate.getMonth() + 1;
let year = newDate.getFullYear();

return `${year}${separator}${month<10?`0${month}`:`${month}`}${separator}${date}`
}

并通过将其导入为

import {getCurrentDate} from './utils'
console.log(getCurrentDate())

备选案文2:或直接在类中定义和使用

getCurrentDate(separator=''){

let newDate = new Date()
let date = newDate.getDate();
let month = newDate.getMonth() + 1;
let year = newDate.getFullYear();

return `${year}${separator}${month<10?`0${month}`:`${month}`}${separator}${date}`
}
3vpjnl9f

3vpjnl9f3#

完整日期和时间:

{new Date().toLocaleString() + ""}

仅提取月份(当前):

{new Date().toLocaleString("en-US", { month: "long" })}

仅浸提天数:

{new Date().toLocaleString("en-US", { day : '2-digit'})}

仅提取年份:

{new Date().getFullYear()}
ndasle7k

ndasle7k4#

你可以用反作用矩软件包

import moment from "moment";

date_create: moment().format("DD-MM-YYYY hh:mm:ss")
qybjjes1

qybjjes15#

简单的解决方案是

{new Date().toLocaleString() + ''}
omhiaaxx

omhiaaxx6#

我小小的进步

getCurrentDate(separator=''){

let newDate = new Date()
let date_raw = newDate.getDate();
let month_raw = newDate.getMonth() + 1;
let year = newDate.getFullYear();
var date, month
  
if (date_raw<10)  {  date ="0"+date_raw.toString()} else {  date =date_raw.toString()}
if (month_raw<10)  {  month ="0"+month_raw.toString()} else {  month =month_raw.toString()}

return (
    <div>{year}{separator}{month}{separator}{date}</div>
            );
}
nue99wik

nue99wik7#

这对我很有效

const current_date = new Date().toLocaleString() + "";

相关问题