众所周知v-model是组件传入值和监听input事件改值操作的语法糖,对于双向绑定的实现,让我们使用起来非常方便
以下是通过原理实现双向绑定
对于一般组件来说,vue2和vue3使用v-model都是用于实现双向绑定,原理就是一个input监听
但v-model的能力远不止如此,尽人皆知,vue在进行子向父传值时可谓相当繁琐,那v-model对于自定义组件的使用,就针对这一点,做了较大的优化
对于vue3自定义组件来说,v-model实质上是给组件绑定了一个modelValue的值,用来做props传值,且附带一个监听事件,update:modelValue,说到这可能还有点难以理解,用代码实现便一目了然
这里用来完成一个工作中常用的功能——弹窗
地球人都知道,子组件弹窗开关就要涉及到父子传值,原生方法相当复杂,这里用v-model进行操作
首先,创建内容,父组件为按钮,子组件是一个带有取消按钮的弹窗,对于弹窗的逻辑,就是简单的显隐,定义变量“popshow”用来存放状态
这样便实现了弹窗的显示,但为了功能不分离,可以将显隐完全交给子组件内部完成
对于弹窗操作,可以利用子向父传值的方式,传入props,触发emit一套流程,而v-model的优势,便体现了出来,我们用v-model相当于传入了modelValue属性,又增加了一个update:modelValue监听
同时,在子组件中,引入props和emit,引入的props用来判断div的display状态
这样就实现了一个弹窗效果,父组件中的v-model可以写为
v-model的传值也可以自定义,对于多和v-model作用于同一个子组件时,就可以给v-model命名
相当于传给子组件的参数为“popshow”
同时要在子组件中对props和emit更改
只要把modelValue更改成需要替换的值就可以
以上就是v-model在vue3自定义组件中的应用😜