当前位置: 首页 > Web前端 > HTML

Vue封装第三方组件

时间:2023-03-28 18:43:39 HTML

需求场景我们在工作中可能经常会遇到这样的场景,我们需要基于某个UI组件库封装一个可复用的组件(本文以Vuetify为例,其他同理)),不仅要实现自定义功能,还要继承第三方组件自己提供的属性和事件。举几个具体的例子:统一给text-field增加一个clearableaction。想要更改文本字段的默认标签样式,从单击到浮动到固定位置。给image组件添加loading效果,给table组件添加一些移动列之类的东西。刷新,csv下载action技术要点1.继承属性v-bind="$attrs"andinheritAttrs:false$attrs包含父组件中除props属性外的属性绑定,所以可以在子组件中使用$attrs获取父组件传递的属性。但默认情况下,这些属性将被视为普通的HTML属性,并应用于子组件的根元素。现在我们创建一个wrapper进行封装的时候,可能达不到预期。这时,我们需要设置inheritAttrs:false来去除这种默认行为。vue2.x和vue3.x的区别$attrs在vue2和vue3中表现不同。在vue2中,$attrs不包含style和class,而在vue3中包含了两个。继承事件v-on="$listeners"$listeners包含父组件范围内的v-on事件监听器。在子组件中,我们可以通过v-on="$listeners"来获取父组件传入的vue2.x和vue3.x事件的区别。$listeners在vue3中被移除,可以直接替换为$attrs3.继承槽$scopedSlots和$slotsvuetify提供了非常灵活的自定义槽,所以槽的继承也很重要。参考文章https://dev.to/onurelib/cre...https://dev.to/kouts/create-w...