Vue3.0新特性 —组件v-model
组件v-model支持参数
在Vue2.x
时,我们要想给子组件传值,还得单独传入。Vue3.x
直接以v-model:xxx
形式传入参数,并且配合修饰符.sync
进行数据同步更新。
App.vue
<template>
{{title}}
<Input v-model:title="title" />
</template>
<script>
import Input from "./components/Input"
export default {
name: 'App',
components: {
Input,
},
data() {
return {
title: "测试",
}
},
}
</script>
Input.vue
<template>
<div class="Input">
<input type="text" @input="first" :value="title">
</div>
</template>
<script>
export default {
name: 'Input',
props: {
title: {
default: () => "测试"
}
},
methods: {
first(e) {
this.$emit("update:title", e.target.value)
},
},
}
</script>
组件支持多个v-model
在Vue3.x
中支持在单个组件上可以创建多个v-model
绑定。
App.vue
<template>
{{title}}
{{name}}
<Input v-model:title="title" v-model:name="name"/>
</template>
<script>
import Input from "./components/Input"
export default {
name: 'App',
components: {
Input,
},
data() {
return {
title: "测试",
name: "clcl"
}
},
}
</script>
Input.vue
<template>
<div class="Input">
<input type="text" @input="first" :value="title">
<input type="text" @input="last" :value="name">
</div>
</template>
<script>
export default {
name: 'Input',
props: {
title: {
default: () => "测试"
},
name: {
default: () => "clcl"
}
},
methods: {
first(e) {
this.$emit("update:title", e.target.value)
},
last(e) {
this.$emit("update:name", e.target.value)
}
}
}
</script>