解决Vue2.x中二次封装Vue组件时批量继承属性,方法,插槽的方法

问题: 有个小伙伴问我,有没有在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中被移除了,需要注意;

猜你喜欢

转载自blog.csdn.net/zy21131437/article/details/123351677