javascript - 从当前日期开始,每次增加 5 天
问题描述
我目前正在尝试根据当前日期增加 5 天。我成功地做到了这一点,但产生了一些不想要的结果。当我递增时,我目前正在将它们推入一个数组,并且随着我的递增,列表将继续增长。我试图一次只显示 5 个结果。如果我当前的日期是 dec.16,我只想从 dec.16-dec.20 开始显示。如果我从那里增加,我只想从 dec.21-dec.25.. 等开始显示。与维护日期数组和切片或类似的东西相反,我想在每次增加时重置数组。我的代码如下:
import React, { useEffect, useState, useCallback } from "react";
import "./styles.scss";
export default function App() {
const [days, setDays] = useState(null);
const [inc, setInc] = useState(5);
const getDaysArray = async (s, e) => {
let a = [];
for (let d = new Date(s); d <= e; d.setDate(d.getDate() + 1)) {
a.push(new Date(d).toString());
}
return a;
};
const getDays = useCallback(async () => {
var currentDate = new Date();
var numberOfDayToAdd = inc;
let newday = currentDate.setDate(currentDate.getDate() + numberOfDayToAdd);
let today = new Date() + inc;
const data = await getDaysArray(today, newday);
setDays(data);
}, [inc]);
useEffect(() => {
getDays(inc);
}, [getDays, inc]);
const decrement = () => {
setInc((state) => state - 5);
};
const increment = () => {
setInc((state) => state + 5);
};
return (
<div>
<button onClick={increment}>inc</button>
<button onClick={decrement}>dec</button>
{days &&
days.map((item) => {
return <div>{item}</div>;
})}
</div>
);
}
这是一个用于调试的代码沙箱https://codesandbox.io/s/wizardly-feistel-tj8pj?file=/src/App.js
解决方案
我不明白您要做什么,但是,您可以重置列表或使用数组切片,例如days.slice(Math.max(days.length - 5, 1))
对于您的问题,我为您编辑了解决方案
它是 inc 增加了 5,然后是 10,然后是 15,所以解决方案是删除 4 天today
并增加 inc
const getDays = useCallback(async () => {
var currentDate = new Date();
let newday = new Date().setDate(currentDate.getDate() + inc-1);
let today = new Date().setDate(currentDate.getDate() + inc - 5);
const data = await getDaysArray(today, newday);
setDays(data);
}, [inc]);
也不要忘记添加key={item.id}
到您的列表组件
推荐阅读
- jestjs - 如何模拟 node.js 模块的事件和事件处理程序?
- c# - 我需要在我的应用程序中使用文本文件中的文本,但我无法正常工作
- java - 如何在 Intellij 中运行导入的 Spring mvc 项目?
- java - 处理复杂对象时如何为 CXF Jakson 配置 web.xml
- swift - 笔尖的 UIButton 的目标操作在 parentViewConteroller 中不起作用
- python - 如何在熊猫数据框+ python的一列中的<>之间找到多个子字符串
- css - 边缘浏览器上的自定义复选框勾选不一致
- php - 如何在php中显示自定义错误消息?
- xslt - 在 XSLT 中选择第一个子元素
- php - php 输出数据库中的数组值