Vue2实战指南:如何二次封装组件
# 如何继承第三方组件的属性
第三方组件中,存在很多Attributes属性,是不需要一个个写的,因此需要用到 $attrs
```javascript
<template>
<v-tooltip
ref="tooltipRef"
v-model="show"
v-bind="$attrs"
z-index="500"
>
</template>
```
# 如何继承第三方组件的Event 事件
```javascript
<template>
<v-tooltip
v-model="show"
v-bind="$attrs"
v-on="$listeners"
z-index="500"
>
</template>
```
# 如何使用第三方组件的Slots
```javascript
<template>
<v-tooltip
v-model="show"
v-bind="$attrs"
z-index="500"
>
<!-- 遍历子组件非作用域插槽,并对父组件暴露 -->
<template v-for="(index, name) in $slots" v-slot:[name]>
<slot :name="name" />
</template>
<!-- 遍历子组件作用域插槽,并对父组件暴露 -->
<template v-for="(index, name) in $scopedSlots" v-slot:[name]="data">
<slot :name="name" v-bind="data"></slot>
</template>
<span v-if="text.length > 0">{{ text }}</span>
</v-tooltip>
</template>
```
# 如何使用第三方组件的Methods
```javascript
mounted() {
this.extendMethod()
},
methods: {
// 继承v-tooltip的Method
extendMethod() {
const refMethod = Object.entries(this.$refs['tooltipRef'])
for (const [key, value] of refMethod) {
if (!(key.includes('$') || key.includes('_'))) {
this[key] = value
}
}
},
}
```