vue封装基础input组件(添加防抖功能)

先看一下效果:
在这里插入图片描述

// 调用页面
<template>
  <div>
    <!-- v-model:伪双向绑定   -->
    <my-input v-model="inputVal" label="姓名" type="textarea" />
  </div>
</template>

<script>
import MyInput from './MyInput.vue'
export default {
   
  name: 'index',
  data () {
   
    return {
   
      inputVal: '111'
    }
  },
  components: {
   
    MyInput
  },
  watch: {
   
    inputVal (newVal, oldVal) {
   
      // console.log('新旧值', { newVal, oldVal })
      this.getDataByInputVal()
    }
  },
  created () {
   
    this.getDataByInputVal = this.debounce(this.getDataByInputVal, 1000)
  },
  methods: {
   
    debounce (fn, wait = 500) {
   
      let timer = null
      return function () {
   
        timer && clearTimeout(timer)
        timer = setTimeout(() => {
   
          console.log('防抖执行了')
          fn()
        }, wait)
      }
    },
    getDataByInputVal () {
   
      setTimeout(() => {
   
        console.log(this.inputVal)
      }, 1000)
    }
  }
}
</script>

<style scoped>

</style>

// my-input组件
<template>
  <div class="my-input">
    <label>{
   {
    label }}</label>
    <input
      v-bind="$attrs"
      @input="$emit('input', $event.target.value)"
    />
  </div>
</template>

<script>
export default {
   
  name: 'MyInput',
  props: {
   
    label: {
   
      type: String,
      required: false
    }
  }
}
</script>

<style scoped>

</style>

相关推荐

  1. Vue3】自定义Input

    2024-01-06 03:04:03       15 阅读
  2. Vue:封装响应式数据的函数

    2024-01-06 03:04:03       18 阅读
  3. vue封装全局的节流函数

    2024-01-06 03:04:03       8 阅读
  4. vue 函数

    2024-01-06 03:04:03       16 阅读
  5. vue3.0-monaco封装

    2024-01-06 03:04:03       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-06 03:04:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-06 03:04:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-06 03:04:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-06 03:04:03       20 阅读

热门阅读

  1. 【学习记录】找最低位1/模块多次例化

    2024-01-06 03:04:03       40 阅读
  2. 《微信小程序开发从入门到实战》学习七十二

    2024-01-06 03:04:03       35 阅读
  3. Unity组件开发--事件管理器

    2024-01-06 03:04:03       35 阅读
  4. vue中导航守卫有哪三种?分别有什么作用

    2024-01-06 03:04:03       39 阅读
  5. 01.PostgreSQL基本SELECT语句

    2024-01-06 03:04:03       51 阅读
  6. 1944. 队列中可以看到的人数

    2024-01-06 03:04:03       39 阅读
  7. labelstudio ocr标注数据解析

    2024-01-06 03:04:03       36 阅读
  8. CSS基础笔记-02动画

    2024-01-06 03:04:03       34 阅读