问题: 有个小伙伴问我,有没有在Vue2.x版本中二次封装组件时,批量继承的方法;
描述: 今天在讨论问题时,我司的有个小伙伴在说到二次封装IView的组件时继承属性的问题,他都是一个一个写的,我发现时比较震惊,因为太麻烦了,况且在Vue2.x中官方是提供了批量继承的功能的,用法不能算是奇葩方法 ;
<xxx-xxx
:columns="columns"
resizable
show-overflow
border
stripe
height="auto"
:data="data"
>
</xxx-xxx>
解决: 对于二次封装组件,需要批量继承的义工有三个,属性,方法,插槽,这三个是最需要,分别如下:
属性继承
<xxx-xxx v-bind="$attrs">
</xxx-xxx>
方法继承
<xxx-xxx v-on="$listeners">
</xxx-xxx>
插槽继承
插槽的话比较特殊,官方没有提供直接的方法,但是不妨碍我们使用一些技巧,如下
<xxx-xxx>
<template v-for="(index, name) in $slots" :slot="name">
<slot :name="name" />
</template>
</xxx-xxx>
这样差不多就可以完成批量的继承属性、方法和插槽了,值得注意的是,这是适用于Vue2.x版本的Vue,在Vue3中并不是完全适用的,比如$listeners在Vue3中被移除了,需要注意;