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 ,这就导致了