$attrs

从父组件传给自定义子组件的属性,如果没有 prop 接收会自动设置到子组件内部的最外层标签上,如果是 class 和 style 的话,会合并最外层标签的 class 和 style。

子组件通过 v-bind="$attrs" 将所有属性绑定到指定元素身上,此时若inheritAttrs为true(默认),最外层div也会有这些属性,正确的应将inheritAttrs改为false,这样去掉默认外层的属性,仅保留在需要的元素身上。

$listeners

子组件通过 v-on="$listeners" 接受父组件绑定的所有函数,例如

//父:
<my-input 
@focus="onFocus" 
@input="onInput">
 </my-input>
//子:
<input
        type="text"
        v-bind="$attrs"
        v-on="$listeners"
 />