首页 > 解决方案 > 在 for 循环中使用时刻对象

问题描述

我试图循环一个日期范围来创建一个引导标题行的日期。以下是我的代码:-

renderHeader(){
    var dates = [];
    const start = "2018-11-10";
    const end = "2018-11-24";
    console.log('Trying to enter the loop');
    for(let date = moment(start); date.isSame(end); date.add(1,'d')){
        console.log(date.format("Do MMM YYYY"));
        console.log(date.isSame(end));
        dates.push(<Col>{date.format("Do MMM YYYY")}</Col>);
    }
    dates.push(<Row>{dates}</Row>);
    //dates.push(<Row><Col>Dummy</Col></Row>);
    return dates;
}

由于某种原因,控件没有进入循环,我在 Chrome 浏览器上收到一条消息说

在潜在的内存不足崩溃之前暂停

浏览器控制台显示以下输出

在此处输入图像描述

如果我删除循环并输入一些虚拟数据,那么一切正常。

标签: javascriptreactjsmomentjs

解决方案


我认为您不能将其用作迭代器。此外,使用while循环会更容易。

var dates = [];
const start = moment("2018-11-10");
const end = moment("2018-11-24");

while(!start.isSame(end)) {
  dates.push(<Col>{start.format("Do MMM YYYY")}</Col>);
  start.add(1, 'day');
}

return dates;

与您想做的相同的原则。虽然不是同一日期,但推送到数组并添加新的一天。


推荐阅读