Vue.js 项目中二次封装一个按钮组件
Vue2 中容易被忽略的两个重要的 API 介绍
Vue2 中封装
 1<template>
 2  <a-button
 3    icon="sync"
 4    title="刷新"
 5    v-bind="$attrs"
 6    v-on="$listeners"
 7  />
 8</template>
 9
10<script>
11/**
12 * 和 a-button 外观、行为完全一致
13 * 区别是预设 icon 和 title 属性
14 */
15export default {
16  inheritAttrs: false,
17}
18</script>
Vue3 中有了一些变化
 1<template>
 2  <a-button
 3    icon="sync"
 4    title="刷新"
 5    v-bind="$attrs"
 6  />
 7</template>
 8
 9<script>
10/**
11 * 和 a-button 外观、行为完全一致
12 * 区别是预设 icon 和 title 属性
13 */
14export default {
15  inheritAttrs: false,
16}
17</script>
升级到 Vue3.x 之后,$attrs 和 $listeners 合并到 $attrs 中,因此直接删除 $listeners 即可,但是要保留 $attrs。
uniapp 中的一个坑
uni-app 仅在 H5 端和 App端V3 中支持 $listeners, 小程序不支持 $listeners ,这就导致了