Vue Options API怎么使用 $attrs 将未识别的属性透传给根元素

梦瑶同学_4408

梦瑶同学_4408

2026-08-13

617人浏览

原创

$attrs 默认自动继承到单根元素,但多根或需过滤/透传至非根元素时须设 inheritattrs: false 并显式 v-bind。

vue options api怎么使用 $attrs 将未识别的属性透传给根元素

在 Vue Options API 中,$attrs 是一个对象,包含父组件传入但未被 props 声明、也未被 v-on(如 @click)显式监听的属性和事件。它默认会**自动继承到组件的根元素上**,但如果你需要手动控制透传(比如透传给非根元素、或过滤/合并属性),就得显式使用 $attrs。

确认 $attrs 默认行为

Vue 2.4+ 和 Vue 3(Options API 模式)中,只要组件模板只有一个根元素,且没有显式绑定 v-bind="$attrs",$attrs 仍会自动“冒泡”到该根元素——这是默认继承(attribute fallthrough)。但一旦你写了 v-bind="$attrs",就等于接管了透传逻辑,此时默认继承会被禁用。

  • 如果组件模板只有一个 <div>,没写 <code>v-bind="$attrs",class、id、data-*、自定义属性等会自动加到这个 <div> 上<li>如果写了 <code><div v-bind="$attrs">,那所有未声明的属性都会被绑定到这个 <code><div>,但其他子元素不会自动获得<li>如果组件有多个根节点(如多个并列元素),<code>$attrs 不会自动应用,必须手动 v-bind 到目标元素
  • 手动透传 $attrs 到根元素(显式控制)

    当你想明确控制哪些属性透传、或需要合并已有属性时,用 v-bind="$attrs" 最直接:

    vue-composition-api-best-practices
    vue-composition-api-best-practices

    Vue 3 组合式 API 与

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Vue 教程
    Vue 教程

    共42课时 | 17.1万人学习

    国外Web开发全栈课程全集
    国外Web开发全栈课程全集

    共12课时 | 1.4万人学习

    Vue.js 微实战--十天技能课堂
    Vue.js 微实战--十天技能课堂

    共18课时 | 1.7万人学习