需求背景:项目有一个导出数据的功能,选择一个时间范围,将这个时间范围区间内的所有客户行为事件全部导出,由于数据量比较大项目要求限制时间跨度为最长1个月,时间过长生成文件的时间太长不友好。
解决思路:当选择开始时间的时候做一次记录,将开始时间记录下来。再根据开始时间来禁用时间跨度大于一个月的日期。
话不多说上代码:
- 关键代码如下
const onCalendarChange = (date) => {
if (date.length==1) {
setClickDate(date[0]);
}
}
const disabledDate = (current) => {
if (clickDate&¤t) {
return Math.abs(moment(current).diff(clickDate,'years'))>0||current >= moment().endOf('day');
}
return current && current >= moment().endOf('day');
}
<RangePicker
showTime={{ format: 'HH:mm' }}
format="YYYY-MM-DD HH:mm"
disabledDate={disabledDate}
onCalendarChange={onCalendarChange}
/>
antd Select下拉选项随屏幕滚动。
// Select组建添加以下属性
getPopupContainer={(triggerNode)=>{ return triggerNode.parentNode}} // 增加这个定位去解决选项滚着跑