vue自定义指令防抖

作者: HTAO濤 | 来源:发表于2020-12-21 08:44 被阅读0次

    v-debounce

    背景:在开发中,有些提交保存按钮有时候会在短时间内被点击多次,这样就会多次重复请求后端接口,造成数据的混乱,比如新增表单的提交按钮,多次点击就会新增多条重复的数据。

    需求:防止按钮在短时间内被多次点击,使用防抖函数限制规定时间内只能点击一次。

    思路:

    定义一个延迟执行的方法,如果在延迟时间内再调用该方法,则重新计算执行时间。

    将事件绑定在 click 方法上。

    const debounce = {

      inserted: function (el, binding) {

        let timer

        el.addEventListener('click', () => {

          if (timer) {

            clearTimeout(timer)

          }

          timer = setTimeout(() => {

            binding.value()

          }, 1000)

        })

      },

    }

    export default debounce

    使用:给 Dom 加上 v-debounce 及回调函数即可

    <template>

      <button v-debounce="debounceClick">防抖</button>

    </template>

    <script>

    export default {

      methods: {

        debounceClick () {

          console.log('只触发一次')

        }

      }

    }

    </script>

    相关文章

      网友评论

        本文标题:vue自定义指令防抖

        本文链接:https://www.haomeiwen.com/subject/kzolnktx.html