vue3中v-model的双向数据绑定

在vue3中,v-model可以一次绑定多个啦。撒花放炮~~~~
本篇文章是基于vue3知识点下的,v-model一个双向数据绑定的示例

示例
//父组件

<template>
	<two v-model:name="user.name" v-model:sex="user.sex"></two>
	<div style="background-color: #2C3E50;color: #fff;padding: 20px;margin: 10px;">
		<p>一级的值:{{user.name}}是一个{{user.sex}}</p>
		<button @click="changeUser">一级按钮</button>
	</div>
</template>
<script>
	import two from './components/two.vue'
	import {
		reactive,
		defineComponent
	} from 'vue'
	export default defineComponent({
		name: 'lycApp',
		components: {
			two
		},
		setup(prop, context) { //context相当于之前的this
			const user = reactive({
				name: 'lyc',
				sex: 'girl'
			})
			const changeUser = () => {
				user.name = 'zyx'
				user.sex = 'boy'
			}
			return {
				user,
				changeUser
			}
		}
	})
</script>

//子组件

<template>
	<div style="background-color: cadetblue;color: #fff;padding: 20px;margin: 10px;">
		<p>二级的值:{{name}}是一个{{sex}}</p>
		<input type="text" :value="name" @input="changeName" placeholder="姓名" ref="refName"/>
		<input type="text" :value="sex" @input="changeAge" placeholder="性别" ref="refSex"/>
	</div>
</template>

<script>
	import {ref} from 'vue'
	export default{
		name:'two',
		props:['name','sex'],
		setup(props,context){
			const refName = ref() //获取input为name的值
			const refSex = ref() //获取input为sex的值
			const changeName = ()=>{
				context.emit('update:name',refName.value.value) //关键点
			}
			const changeAge = ()=>{
				context.emit('update:sex',refSex.value.value)//关键点
			}
			return {
				refName,
				refSex,
				changeName,
				changeAge
			}
		}
	}
</script>

<style>
</style>

//效果图
在这里插入图片描述
点击一级按钮,一二级的值都会改变。在二级的input中输入值,会改变所有对应参数里面的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值