浅析v-model的原理及在自定义组件中的应用

本文详细介绍了Vue.js中v-model的原理,它实际上是v-bind和v-on的语法糖。在自定义组件中实现v-model双向绑定,需要组件接收一个props(如`visible`),并通过`@update:visible`(或通常的`@input`)事件将更新的值返回给父组件,从而达到数据同步的效果。这种方式使得自定义组件能够无缝集成到Vue的响应式系统中。
摘要由CSDN通过智能技术生成

v-model的双向绑定

v-modelv-bindv-on配合使用的语法糖

<input v-model="value" />

// 就是相当于: 
<input :value="value" @input="value= $event.target.value" />

v-model在自定义组件中的使用

为了让我们的组件支持v-model双向绑定,组件需要接受一个props 并发出一个input事件。

// 父组件

<template>
  <div>
    <Dialog :visible="x" @update:visible="x = $event"></Dialog>
    <!--等价于-->
    <Dialog v-model:visible="x"></Dialog>
  </div>
</template>
// 子组件 Dialog

<script lang="ts">
export default {
  props: {
    visible: {
      type: Boolean,
      default: false
    }
  },
  setup(props, context) {
    const close = () => {
      context.emit('update:visible', true)
    }
    return {close}
  }
};
</script>

在自定义组件中使用v-model,将visible的值传给子组件,子组件接收prop(visible),同时,在利用update:visivle事件(一般使用input事件,这里是个人习惯)将值通过$emit,将值再传递给父组件,直接赋值给visible,这样就形成了自定义组件的一个双向数据绑定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值