解决Element Plus el-date-picker组件清空时,触发两次change的问题

devtools/2025/1/18 10:43:49/

问题

el-date-picker 组件在选择日期范围时会触发两次 change 事件。当用户选择了范围的开始时,会立即触发一次 change 事件。而当用户选择了范围的结束时,又会触发一次 change 事件。

解决方法

1. 延迟更新

<template><div>选择日期--{{dateValue}}</div><el-date-pickerv-model.lazy="dateValue"type="datetimerange"range-separator="To"start-placeholder="开始日期"end-placeholder="结束日期"@change="handleChangeDate"/>
</template>
<script setup >javascript">
import { ElementPlus } from '@element-plus/icons-vue';
import { ref} from 'vue';
const dateValue= ref("");
let debounceTimer = null;const handleChangeDate= (val) => {handleChange(val);
}
const handleChange = (val) => {// 清除已经设置的定时器,以防止多个事件被延迟执行clearTimeout(debounceTimer);debounceTimer = setTimeout(() => {console.log('Date changed:', val);}, 300); // 延迟300毫秒执行
};
</script>

这种方案适合所有时间范围选择(daterange、datetimerange、monthrange、yearrange),但考虑到 JavaScript 是单线程的,如果在指定的时间点上有大量代码正在执行,setTimeout 里的函数可能会被延迟执行。每一个 setTimeou t都是在增加一个新的JavaScript任务,会影响浏览器主线程,导致界面响应变慢。

2. change、clear事件结合

<template><div>选择日期--{{dateValue}}</div><el-date-pickerv-model="dateValue"type="monthrange"range-separator=""start-placeholder="开始日期"end-placeholder="结束日期"@change="handlerChangeDate"@clear="handlerClearDate"/>
</template>
<script setup >javascript">
import { ref} from 'vue'
const dateValue= ref("");
const handlerChangeDate= (val) => {if(val){console.log(‘handlerChangeDate’)}
}const handlerClearDate= () => {console.log(‘handlerClearDate’)
}
</script>

这种方案适合daterange、monthrange、yearrange等三种时间范围选择


http://www.ppmy.cn/devtools/151538.html

相关文章

大疆最新款无人机发布,可照亮百米之外目标

近日&#xff0c;DJI 大疆发布全新小型智能多光旗舰 DJI Matrice 4 系列&#xff0c;包含 Matrice 4T 和 Matrice 4E 两款机型。DJI Matrice 4E 价格为27888 元起&#xff0c;DJI Matrice 4T价格为38888元起。 图片来源&#xff1a;大疆官网 DJI Matrice 4E DJI Matrice 4T D…

网络是怎么样连接的--输入www.baidu.com之后网络的底层运行

网络是怎么样连接的这本书就是在讲**浏览器输入一个网址之后&#xff0c;到页面渲染计算机网络层和软件层面发生了什么变化。** DNS解析 1.首先对网址进行解析&#xff0c;我们输入的一个http://www.baidu.com/ 如果后面不带任何的资源路径&#xff0c;默认访问的是跟目录下面…

关于php语言api接口开发的流程

确定接口需求&#xff1a;首先明确接口的功能和需求&#xff0c;包括输入参数、输出结果以及接口的业务逻辑。 设计接口路由&#xff1a;根据接口需求&#xff0c;设计具体的接口路由&#xff0c;即URL路径&#xff0c;用于访问接口。 搭建PHP环境&#xff1a;确保你的服务器上…

冒泡排序 选择排序 插入排序

package com.nobody.sort; /** author Mr.nobody Description 插入排序 date 2020/9/5 */ public class Code01_InsertionSort { public static void insertionSort(int[] arr) { // 数组为空&#xff0c;或者数组长度小于2就没必要操作 if (null arr || arr.length …

【机器学习实战入门】使用OpenCV和Keras的驾驶员疲劳检测系统

嗜睡驾驶者警报系统 防止司机疲劳驾驶警报系统 中级 Python 项目 - 司机疲劳检测系统 疲劳检测是一种安全技术&#xff0c;能够预防因司机在驾驶过程中入睡而造成的事故。 本中级 Python 项目的目标是建立一个疲劳检测系统&#xff0c;该系统将检测到一个人的眼睛闭合了一段时…

STM32 FreeRTOS时间片调度---FreeRTOS任务相关API函数---FreeRTOS时间管理

目录 时间片调度简介 FreeRTOS任务相关API函数介绍 延时函数介绍 时间片调度简介 在FreeRTOS中&#xff0c;同等优先级的任务会轮流分享相同的CPU时间&#xff0c;这个时间被称为时间片。在这里&#xff0c;一个时间片的长度等同于SysTick中断的周期。 FreeRTOS任务相关API…

使用Nginx正向代理让内网主机通过外网主机访问互联网

目录 环境概述 流程说明 在外网服务器上安装部署nginx? 安装前准备 下载nginx ?编译安装nginx 开始配置正向代理 创建systemd服务单元文件&#xff0c;用于管理Nginx服务的启动、停止和重新加载 启动nginx ?代理服务器本地验证 ?内网服务器验证 ?将代理地址添…

服务器怎样防范网络蠕虫病毒?

蠕虫病毒是一种较为常见的计算机病毒&#xff0c;会通过计算机网络中存在的漏洞进行传播&#xff0c;破坏计算机功能和篡改数据信息和系统&#xff0c;蠕虫病毒的传播范围广传播速度比较快&#xff0c;不需要宿主程序即可传播&#xff0c;对于企业来说该怎样防范服务器中的网络…