Vue 2与Vue 3在自定义组件v-model上的区别
在vue开发中,通常会对一个自定义的组件进行封装,并实现v-model双向绑定功能
在 Vue 2 中,通常这样实现
父组件
<template>
<Child v-model="number"></Child>
</template>
<script>
export default {
data() {
return {
number: 0
}
},
components: {
Child: () => import("./Child.vue")
}
}
</script>
子组件
<template>
<button @click="handleClick">{{ value }}</button>
</template>
<script>
export default {
props: {
value: Number
},
methods: {
handleClick() {
// 通过emit一个input事件出去,实现 v-model
this.$emit('input', this.value + 1)
}
}
}
</script>
在 vue 3 中,通过这样实现
父组件
<template>
<Child v-model="number"></Child>
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue';
export default defineComponent({
setup() {
const number = ref(0);
return {
number
};
},
});
</script>
子组件
<template>
<button @click="handleClick">{{ value }}</button>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({
props: {
// 更换成了 modelValue
modelValue: Number
},
setup(props, { emit }) {
// 关闭弹出层
const handleClick = () => emit('update:modelValue', props.modelValue + 1);
return { handleClick };
},
});
</script>
|| 版权声明
作者:云言
链接:https://yyink.cn/archives/328.html
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《云言博客》所有,欢迎转载,转载请保留原文链接。
作者:云言
链接:https://yyink.cn/archives/328.html
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《云言博客》所有,欢迎转载,转载请保留原文链接。
THE END
0
二维码
海报
Vue 2与Vue 3在自定义组件v-model上的区别
在vue开发中,通常会对一个自定义的组件进行封装,并实现v-model双向绑定功能
在 Vue 2 中,通常这样实现
父组件
<template>
<Child v-model="nu……

共有 0 条评论