Vue3自定义组件v-model双向绑定

无能吐槽一下,虽然用了很多遍v-model,但是还是不得要领,每次看官网都感觉说的不是很清晰,在写的时候还是要查看文档,可能就是不理解原理,这次特意好好写一篇文章,让自己好好理解一下。

自定义一个组件

假设我们自定义一个搜索框组件,样式肯定是比input 标签本身的好看,在配上搜索按钮
在这里插入图片描述
这里的代码就不描述了

组件需要参数吧

搜索框输入的文本你怎么告诉别人,双向绑定呗

  1. 定义一个参数,组件定义参数 defineProps,没错吧
 <template>
   <div class="search_btn">
      <div class="search_icon" />
      <input />
    </div>
</template>

<script setup lang="ts">
defineProps({
  searchWord: {
    type: String,
    required: false
  }
});
</script>
  1. 在给input 框绑定上这个参数 :value=“searchWord”,这样你在你定义的组件里面不就能获取到输入的值了吗
 <template>
   <div class="search_btn">
      <div class="search_icon" />
      <input :value="searchWord" />
    </div>
</template>

<script setup lang="ts">
defineProps({
  searchWord: {
    type: String,
    required: false
  }
});
</script>

别人用你的组件参数变化了你得告诉别人吧

  1. defineEmits 定义一个事件呗
const emits = defineEmits(['update:searchWord']);
  1. 啥时候通知啊,文本输入的有变化就通知呗,绑定@input事件
 @input="$emit('update:searchWord', $event.target.value)"
  1. 上个完整的代码
 <template>
   <div class="search_btn">
      <div class="search_icon" />
      <input :value="searchWord" @input="$emit('update:searchWord', $event.target.value)"/>
    </div>
</template>

<script setup lang="ts">
defineProps({
  searchWord: {
    type: String,
    required: false
  }
});
const emits = defineEmits(['update:searchWord']);
</script>
咋用你定义的组件啊
  <main-search
      placeholder="请输入企业名称"
      v-model:search-word="keyWord"
    />

到这里你可能有点疑问,官方的咋没有:search-word 后面这段,可以理解为原来的就是默认值,你给了就用你的,默认值就是modelValue,如果你组件里面也叫这个,你就不用说你参数叫啥了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/407137.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络编程、UDP、TCP

计算机网络 就是将地理位置不同的具有独立功能的多台计算及外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统、网络管理软件以及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统 目的 传播交流信息、数据交换、通信 如何做…

JVM(1)

JVM简介 JVM是Java Virtual Machine的简称,意为Java虚拟机. 在java中,它归属于jre(java运行时环境), 而jre归属于jdk(java开发工具包). 虚拟机是指通过软件模拟的具有完整硬件功能的,运行在一个完全隔离的环境中的完整计算机系统. 常见的虚拟机:JVM, VMwave, VirtualBox. J…

java——File类和字符集

目录 File类File类的常用操作&#xff1a;案例&#xff1a;文件搜索的实现案例&#xff1a;递归文件夹删除 字符集几种常见的字符集总结字符集的编码和解码 File类 File是java.io.包下的类&#xff0c;File类的对象&#xff0c;用于代表当前操作系统的文件&#xff08;可以是文…

聊聊JVM运行时数据区的堆内存

聊聊JVM运行时数据区的堆内存 内存模型变迁&#xff1a; Java堆在JVM启动时创建内存区域去实现对象、数组与运行时常量的内存分配&#xff0c;它是虚拟机管理最大的&#xff0c;也是垃圾回收的主要内存区域 。 内存模型变迁&#xff1a; 为什么要有年轻区和老年区&#xff1f;…

中兴助力低空经济发展,携山东移动完成5G-A通感一体商用验证

日前&#xff0c;中兴通讯在5G-A通感一体化技术研究和商用落地领域实现新突破。具体来说&#xff0c;中兴通讯联手山东移动&#xff0c;率先完成了5G-A&#xff08;5G-Advanced&#xff09;通感一体化技术试点&#xff0c;完成对低空无人机的通信感知融合测试。据悉&#xff0c…

java面试题之mysql篇

1、数据库索引 索引是对数据库表中一列或多列的值进行排序的一种结构&#xff0c;使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她&#xff0c;则与在表中搜索所有的行相比&#xff0c;索引有助于更快地获取信息。 索引的一个主要目的就是加快检索…

数据结构day4

实现创建单向循环链表、创建结点、判空、输出、头插、按位置插入、尾删、按位置删除 loop_list.c #include "loop_list.h" loop_p create_head() {loop_p L(loop_p)malloc(sizeof(loop_list));if(LNULL){printf("空间申请失败\n");return NULL;}L->le…

clip_as_service学习

参考&#xff1a;clip_as_service学习过程(一)——安装客户端与服务端_clip-as-service-CSDN博客 CLIP-as-service 0.8.3 documentation (jina.ai) pip3 install clip-client /usr/local/python3/bin/python3.7 -m pip install --upgrade pip pip3 install clip-server pyt…

boost搜索引擎

boost搜索引擎 1. 项目背景1.1 搜索引擎基本原理1.2 Boost库1.3 项目的目标 2. Boost搜索引擎宏观流程3. 技术栈与环境3.1 技术栈3.2 环境 4. 认识什么是索引4.1 正排索引4.2 倒排索引4.3 我们如何分词&#xff1f;4.4 模拟查找过程 5. 数据处理5.1 下载boost库到本地5.2 认识标…

IOS不使用默认的mainStroryboard作为首个controller的方法

步骤1&#xff1a; 删除info.plist文件下的一条配置&#xff0c;如图 步骤2&#xff1a; 编辑AppDelegate.m&#xff0c;参考以下代码 interface AppDelegate () //property (strong, nonatomic) UIWindow * window; property(nonatomic,strong) UIWindow * win; property(…

接近于pi的程序

在一个平静的午后&#xff0c;两个神秘的数字悄然相遇了。它们分别是-1031158223和-328227871。这两个数字看起来普普通通&#xff0c;但谁知它们背后隐藏着一段令人惊叹的奇幻之旅。 这两个数字其实是π的两位探险家&#xff0c;它们决定通过一次除法运算来探索π的奥秘。它们…

影响KNN算法的其它因素及欧式距离方案流程

预测并不是特别准确原因 四大原因 1. 预测模型的参数不够好,上篇文章K的取值问题,可以解决; 2. 影响因子不够多,这个需要增加维度,如2维,(x,y); 3. 样本数量不够,这个需要更多的数据采集,才能保证数据的精准度; 4. 预测选取模型不够好,这个只能重新选择其它模型…

VSCode中打开md文件的智能提示

VSCode中打开md文件的智能提示 vscode中md的只能提示是默认关闭的,要打开必须要做些设置. 搜了好多文章,都是坑! 明明没设置成功,参数类型不对还信誓旦旦的坑自己同胞! 也难怪国内人学的那么难,反而国外学的很简单! 找了以下外面的资料,还是隔壁的人认真,给出了以下方法,测试成…

Sqli-labs靶场第11关详解[Sqli-labs-less-11]

Sqli-labs-Less-11 前言&#xff1a; SQL注入的三个条件&#xff1a; ①参数可控&#xff1b;&#xff08;从参数输入就知道参数可控&#xff09; ②参数过滤不彻底导致恶意代码被执行&#xff1b;&#xff08;需要在测试过程中判断&#xff09; ③参数带入数据库执行。&…

maven插件wagon-ssh、os-maven-plugin、buildnumber-maven-plugin使用详解

文章目录 前言一、os-maven-plugin的使用二、buildnumber-maven-plugin使用1、时间戳策略2、数字策略 三、wagon-ssh使用1、上传文件/文件夹2、执行Linux命令或者shell脚本 总结 前言 有时我们在构建项目时&#xff0c;希望能自动生成版本号或者生成不同操作系统标识的版本后缀…

力扣日记2.22-【回溯算法篇】47. 全排列 II

力扣日记&#xff1a;【回溯算法篇】47. 全排列 II 日期&#xff1a;2023.2.22 参考&#xff1a;代码随想录、力扣 47. 全排列 II 题目描述 难度&#xff1a;中等 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输…

07 Redis之持久化(RDB(Redis DataBase) + 写时复制 + AOF(Append Only File)+混合持久化)

4 Redis持久化 Redis 是一个内存数据库&#xff0c;然而内存中的数据是不持久的&#xff0c;若主机宕机或 Redis 关机重启&#xff0c;则内存中的数据全部丢失。 当然&#xff0c;这是不允许的。Redis 具有持久化功能&#xff0c;其会按照设置以快照或操作日志的形式将数据持…

用这款APP,世界听你的!

在这个科技日新月异的时代&#xff0c;我们的生活被各种手机软件所包围。几乎每个人都有一个甚至多个手机&#xff0c;你是否也有遇到过需要远程操作自己某一台手机的场景呢&#xff1f;今天&#xff0c;我要向大家推荐一款神奇的手机远程操作神器&#xff0c;让你可以随时随地…

vue3中ref创建变量取值时自动补充 .value 插件 volar

插件 TypeScript Vue Plugin (Volar) 设置中配置

HMI界面:是工业自动化的“窗口”,大有用武之地。

Hello&#xff0c;我是大千UI工场&#xff0c;本期分享HMI人机交互界面在工业自动化领域的应用&#xff0c;关注大千&#xff0c;学习N多UI干货&#xff0c;有设计需求&#xff0c;我们也可以接单。 HMI&#xff08;Human Machine Interface&#xff0c;人机界面&#xff09;在…
最新文章