Vue3实现自定义Input组件的示例详解

 更新时间:2024年03月19日 09:18:30   作者:田本初123  
这篇文章主要为大家详细介绍了如何使用Vue3自定义实现一个类似el-input的组件,可以v-model双向绑定,感兴趣的小伙伴可以跟随小编一起学习一下

实现一个类似el-input的组件,可以v-model双向绑定。

v-model作用于组件时,相当于

<template>
  <MyInput v-model="user_name" /> 
  <MyInput :modelValue="user_name" @update:modelValue="user_name = $event" />
</template>

父组件

<template>
  <MyInput v-model="user_name" /> 
</template>

<script setup lang="ts" name="Home123">
import { ref } from "vue"
import MyInput from "./MyInput.vue"

let user_name = ref("")
</script>

<style scoped></style>

自定义Input组件

<template>
  <input
    type="text"
    :value="modelValue"
    @input="emits('update:modelValue', (<HTMLInputElement>$event.target).value)"
  />
</template>

<script setup lang="ts" name="MyInput123">
defineProps(["modelValue"])
let emits = defineEmits(["update:modelValue"])
</script>

<style scoped>
input {
  width: 200px;
  height: 40px;
  background-color: antiquewhite;
  border: 1px solid #efefef;
  border-radius: 5px;
}
</style>

v-model默认以 :modelValue 以及 @update:modelValue 两步实现。

如果绑定多个v-model就需要自定义属性名,可以在v-model后添加 :属性名

<template>
  <MyInput v-model:user="user_name" /> 
</template>

子组件中将原先modelValue变为自定义属性名

<template>
  <input
    type="text"
    :value="user"
    @input="emits('update:user', (<HTMLInputElement>$event.target).value)"
  />
</template>

<script setup lang="ts" name="MyInput123">
defineProps(["user"])
let emits = defineEmits(["update:user"])
</script>

子组件中Input的 $event 是什么,以及什么时候可以.target。

对于原生事件来说, $event就是事件对象,所以可以.target。

对于自定义事件来说, $event就是触发事件时,所传递的数据。

到此这篇关于Vue3实现自定义Input组件的示例详解的文章就介绍到这了,更多相关Vue3自定义Input组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作

    Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作

    这篇文章主要介绍了Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • vue ElementUI实现异步加载树

    vue ElementUI实现异步加载树

    这篇文章主要为大家详细介绍了vue ElementUI实现异步加载树,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • vue限制输入框只能输入8位整数和2位小数的代码

    vue限制输入框只能输入8位整数和2位小数的代码

    这篇文章主要介绍了vue限制输入框只能输入8位整数和2位小数,文中我们使用v-model加watch 实现这一个功能,代码简单易懂,需要的朋友可以参考下
    2019-11-11
  • Vue3后台管理系统之创建和配置项目

    Vue3后台管理系统之创建和配置项目

    后台管理系统是我们日常开发学习经常遇到的一个项目,下面这篇文章主要给大家介绍了关于Vue3后台管理系统之创建和配置项目的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • 解析使用useDark(),发现transition 动画失效

    解析使用useDark(),发现transition 动画失效

    这篇文章主要为大家介绍了使用useDark(),发现transition动画失效的示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Vue自定义CSS变量的使用方法

    Vue自定义CSS变量的使用方法

    随着前端技术的发展,CSS 变量(也称为 CSS 定制属性)成为了现代 Web 开发中不可或缺的一部分,在 Vue.js 应用程序中,使用 CSS 变量不仅可以增强样式的灵活性,还能提高开发效率,本文将详细介绍如何在 Vue 项目中引入并使用 CSS 变量,需要的朋友可以参考下
    2024-09-09
  • Vue实现选项卡tab切换制作

    Vue实现选项卡tab切换制作

    这篇文章主要为大家详细介绍了Vue实现选项卡tab切换制作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • vue3解构赋值失去响应式引发的问题思考

    vue3解构赋值失去响应式引发的问题思考

    这篇文章主要介绍了vue3解构赋值失去响应式引发的问题思考,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • Vue中的.vue文件的使用方式

    Vue中的.vue文件的使用方式

    这篇文章主要介绍了Vue中的.vue文件的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • vue3.0+vant3.0快速搭建项目的实现

    vue3.0+vant3.0快速搭建项目的实现

    本文主要介绍了vue3.0+vant3.0快速搭建项目的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08

最新评论