03 Vue怎么封装一个组件

vvEcho 2026-03-20 12:09:54
Categories: Tags:

一般用props定义属性,然后emit来触发事件,在Vue3来说一般使用v-model来写,本质是props + emit 的语法糖
举例说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!-- 定义一个MyButton.vue -->
<template>
<button @click="handleClick">{{ text }}</button>
</template>

<script>
export default {
props: {
text: String
},
methods: {
handleClick() {
this.$emit('click')
}
}
}
</script>

<MyButton text="提交" @click="submit" />

总结
在 Vue 中封装组件主要是通过 props 接收外部数据,通过 emit 向外部发送事件,同时通过 slot 提高组件的灵活性。
对于需要双向绑定的场景,可以通过 v-model 实现,本质是 props 和 emit 的语法糖。
在设计组件时,我会尽量保证组件的通用性和可复用性,比如通过 props 控制行为,通过 slot 扩展内容,同时避免组件内部和业务强耦合