vue3 组件间v-model

Vue3组件间v-model实现与双向数据绑定
本文总结了Vue3中组件间的v-model实现方式,包括父组件的写法和子组件的写法。父组件通过v-model绑定变量,子组件内部使用ref和watchEffect监听并更新值,通过$emit触发'update:propName'来实现数据回传,达到双向数据绑定的效果。这种方式类似于Vue2的.sync修饰符。


父组件中的写法

html

	<p>父子组件之间v-model的运用</p>
    <p>父组件上的显示值:{{text}}</p>
    <demo-child v-model:text="text" />

ts

	import { defineComponent, provide, ref, reactive,getCurrentInstance } from "vue";
	import demoChild from './demochild.vue';
	
	export default defineComponent({
 		name: "demo",
  		components:{
      		demoChild
  		},
		setup(props,ctx) {
		    const text = ref<string>('');
		    return { text };
  		},
	});

子组件中的写法

html

  <div>
      <input type="text" v-model="textOfChild">
  </div>

ts

import { defineComponent, ref, inject,toRefs,unref, watchEffect, } from "vue";

export default defineComponent({
  name: "demoChild",
  props:['text'],
  setup(props,ctx) {
      const textOfChild=ref<string>('')
      watchEffect(()=>{
        ctx.emit('update:text',textOfChild.value)
      });
    return { textOfChild };
  },
});

实现效果

总结

vue3.0通过在子组件标签上使用v-model:传递变量名="父组件变量"的形式来实现组件间的双向数据绑定,有点类似于vue2.x中的传递变量名.sync="父组件变量"的写法, 再通过子组件执行 $emit(‘update:传递变量名’,传递值) 来实现向父组件传递数据,使其绑定的那个父组件变量值变为传递值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值