时间选择记录
import { DatePicker } from "antd";
import React, { useRef, useState } from "react";
import moment from "moment";
let todayMoment = moment();
const items = [
{
start: 0,
end: 0,
label: "今天",
unit: "days",
},
{
start: -1,
end: -1,
label: "昨天",
unit: "days",
},
{
start: -7,
end: 0,
label: "最近7天",
unit: "days",
},
{
start: -30,
end: 0,
label: "最近30天",
unit: "days",
},
];
function AntdPicker() {
const [open, setOpen] = useState(false);
const [initialValue, setInitialValue] = useState(null);
const selectIndex = useRef(null);
const onMouseEnter = (item: any) => {
if (selectIndex.current == null) {
const start = todayMoment.clone().add(item.start, item.unit);
const end = todayMoment.clone().add(item.end, item.unit);
setInitialValue([start, end]);
}
};
const onMouseLeave = () => {
if (selectIndex.current == null) {
setInitialValue(null);
}
};
const onClick = (item: any, index: number) => {
onMouseEnter(item);
selectIndex.current = index;
setOpen(false)
};
return (
<DatePicker.RangePicker
open={open}
value={initialValue}
onOpenChange={(v) => {
setOpen(v)
if (v) {
todayMoment = moment();
selectIndex.current = null;
}
}}
panelRender={(re) => (
<div>
<div style={{ display: "flex", alignItems: "center" }}>
<div>
<ul>
{items.map((item, index) => (
<li
key={index}
onMouseEnter={() => onMouseEnter(item)}
onMouseLeave={onMouseLeave}
onClick={() => onClick(item, index)}
>
{item.label}
</li>
))}
</ul>
</div>
{re}
</div>
</div>
)}
/>
);
}
export default AntdPicker;