输入框 扫描获得信息 防抖数据

vue 用于扫描获取到信息,反馈到input框里面,跟硬件交互时使用

<input class="inputDev" ref="inputCustomerId" v-debounce="updateCardId"  placeholder="请输入"  v-model="form.customerId " />

directives: {
            debounce: {
                inserted(el, binding, vnode) {
                    let interval = null;
                    el.addEventListener('input', () => {
                        if (interval !== null) {
                            clearInterval(interval);
                        }
                        interval = setTimeout(() => {
                            binding.value(el.value); // 使用binding.value执行传递进来的函数,传入input的值
                            // console.log('el.value',el.value)
                        }, 100); // 设置防抖时间,这里是100毫秒
                    });
                }
            }
        },

method:{

// 更新证件号数据
            updateCardId(value){
                console.log('value', value)
                this.form.customerId = value
            },

}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UniApp 的输入框(`UI.input`)本身并不内置防抖或节流功能,但你可以通过在事件处理程序中手动实现这两个概念来优化输入事件的响应。防抖和节流是常见的性能优化技术,用于减少高频重复事件的执行次数,防止资源过度消耗。 **防抖(Debounce)**: - 防抖的目的是确保在一个输入停止后一段时间内,只执行一次特定的处理函数,比如发送网络请求。 - 当连续触发输入事件时,只有最后一次的事件会被处理,其余的会被忽略,直到输入暂停超过设定的时间(如200毫秒)。 **节流(Throttle)**: - 节流则是确保在一定时间内,最多执行某函数的指定次数,即使输入频繁触发。 - 它会在一定时间间隔(如500毫秒)内执行函数,如果在这段时间内又有新的输入事件,那么会取消之前正在执行的任务,等待下一次节流周期。 要实现这些效果,你可以在处理 `input` 事件的回调函数中使用 JavaScript 的内置方法,如下所示: ```javascript let timerId; const handleInput = (event) => { clearTimeout(timerId); timerId = setTimeout(() => { // 这里是你需要执行的处理逻辑,例如发送数据到后台 sendDataToServer(); }, 200); // 200毫秒的防抖时间(根据需求调整) }; UI.input.on('input', handleInput); ``` 或者使用第三方库(如lodash的debounce或lodash.throttle),这样代码更简洁: ```javascript import { debounce } from 'lodash'; UI.input.on('input', debounce(handleInput, 200)); ``` **相关问题--:** 1. 如何在UniApp中使用自定义防抖或节流函数? 2. 为什么要用防抖而不是节流来限制输入事件的响应? 3. 如果输入事件非常密集,单纯的防抖或节流会有什么问题?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值