v-model的原理和其在vue3中针对自定义组件的用法

众所周知v-model是组件传入值和监听input事件改值操作的语法糖,对于双向绑定的实现,让我们使用起来非常方便

以下是通过原理实现双向绑定

c6aee0494cc64a8689ce65c6917ebb2c.png

 9fd9490370df48aabb5f27109dfb55f1.png

 52d2808f61004caf949858834e772752.png

 对于一般组件来说,vue2和vue3使用v-model都是用于实现双向绑定,原理就是一个input监听

但v-model的能力远不止如此,尽人皆知,vue在进行子向父传值时可谓相当繁琐,那v-model对于自定义组件的使用,就针对这一点,做了较大的优化

对于vue3自定义组件来说,v-model实质上是给组件绑定了一个modelValue的值,用来做props传值,且附带一个监听事件,update:modelValue,说到这可能还有点难以理解,用代码实现便一目了然

这里用来完成一个工作中常用的功能——弹窗

地球人都知道,子组件弹窗开关就要涉及到父子传值,原生方法相当复杂,这里用v-model进行操作

首先,创建内容,父组件为按钮,子组件是一个带有取消按钮的弹窗,对于弹窗的逻辑,就是简单的显隐,定义变量“popshow”用来存放状态

6acc501bd17f4a1bbadb47076056cd22.png

 这样便实现了弹窗的显示,但为了功能不分离,可以将显隐完全交给子组件内部完成

对于弹窗操作,可以利用子向父传值的方式,传入props,触发emit一套流程,而v-model的优势,便体现了出来,我们用v-model相当于传入了modelValue属性,又增加了一个update:modelValue监听

5e9d0dcb2fae4b69828394d363e55ae9.png

 同时,在子组件中,引入props和emit,引入的props用来判断div的display状态

6f542d303e8847a6859a3ba78ff1ddf2.png

 这样就实现了一个弹窗效果,父组件中的v-model可以写为

6a2f09544e934bc7a20a0da6547e75c4.png

 v-model的传值也可以自定义,对于多和v-model作用于同一个子组件时,就可以给v-model命名

f092a41b0c624a1baa936ec6155eb024.png

 相当于传给子组件的参数为“popshow”

同时要在子组件中对props和emit更改

d822f88b986c452f8d7a6ab127d37258.png

 只要把modelValue更改成需要替换的值就可以

以上就是v-model在vue3自定义组件中的应用😜

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值