首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

inheritAttrs: false和$attrs在Vue中的用途是什么?

inheritAttrs: false是Vue组件选项之一,用于控制组件是否继承父组件的属性。当设置为false时,子组件将不会继承父组件的非props属性。

$attrs是Vue实例的一个属性,它包含了父作用域中不被子组件props所识别(即非props属性)的属性。在子组件中,可以通过$attrs来访问这些属性。

综合起来,inheritAttrs: false和$attrs在Vue中的用途是为了控制组件的属性继承和访问。当我们希望子组件不继承父组件的非props属性时,可以在子组件中设置inheritAttrs: false。然后通过$attrs来访问父组件传递的非props属性,以便在子组件中使用这些属性。

这种用法在以下场景中特别有用:

  1. 当父组件传递了一些额外的属性,但子组件并不需要使用这些属性时,可以通过设置inheritAttrs: false来避免属性的继承,减少不必要的属性传递和处理。
  2. 当子组件需要将接收到的非props属性传递给内部的子组件时,可以使用$attrs来传递这些属性,实现属性的透传。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云云数据库MySQL版、腾讯云对象存储(COS)等。

腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm 腾讯云云数据库MySQL版:https://cloud.tencent.com/product/cdb_mysql 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Vue$attrs$listener使用

前面讲了关于vue组件间数据传递,如果没有看过,关注公众号,有历史推荐,讲比较详细,有代码,新手也能看懂,今天说一说attrslistener。...这次我们用attrs $attrs 官方解释:包含了父作用域中不作为 prop 被识别 (且获取) attribute 绑定 (class style 除外)。...当一个组件没有声明任何 prop 时,这里会包含所有父作用域绑定 (class style 除外),并且可以通过 v-bind="$attrs" 传入内部组件——创建高级别的组件时非常有用。...通俗易懂说就是用$attrs可以获取父组件传递过来所有属性,不包含class,styleprops接收。...来接收来自父组件信息 子组件调用孙子组件,绑定$attrs,孙子组件就可以直接接收父组件内容 多层传递省时省力 $listener 官方解释:包含了父作用域中 (不含 .native 修饰器

1.1K1110

Vue 新增$attrs与$listeners详解

名词解释 inheritAttrs:默认值true,继承所有的父组件属性(除props特定绑定)作为普通HTML特性应用在子组件根元素上,如果你不希望组件根元素继承特性设置inheritAttrs...: false,但是class属性会继承(简单说,inheritAttrs:true 继承除props之外所有属性;inheritAttrsfalse 只继承class属性) $attrs--继承所有的父组件属性...(除了prop传递属性、class style ),一般用在子组件子元素上,如第一个例子 $listeners--属性,它是一个对象,里面包含了作用在这个组件上所有监听器...-2.5.13.js"> Vue.component("base-input", { inheritAttrs: false, //此处设置禁用继承特性...-- 通过v-bind 绑定$attrs属性,C组件可以直接获取到A组件传递下来props(除了B组件props声明) --> <child2 v-bind="$<em>attrs</em>" v-on

2.6K50

Vue2.4$attrs$listeners使用-学习笔记

本来 自定义一个Vue 中央数据总线,这个情况适合碰到组件跨级传递消息,但是使用VueX感觉又有点浪费项目中,但是缺点是,碰到多人合作时,代码维护性较低,代码可读性低 很多开发情况下,我们只是想把...vue2.4,为了解决该需求,引入了attrs listeners , 新增了inheritAttrs 选项。...新增选项inheritAttrs inheritAttrs默认值为true, 将inheritAttrs值设为false, 这些默认行为会禁止掉。...:false } 输出结果如下 从上面的代码,可以看出使用$attrsinheritAttrs 属性 能够使用简洁代码,将A组件数据传递给C组件 ,该场景使用范围还是挺广...vue2.4版本新增了listeners 属性,我们b组件上 绑定 v-on=”listeners”, a组件,监听c组件触发事件。就能把c组件发出数据,传递给a组件。

91260

Vue 父子组件数据传递( inheritAttrs + $attrs + $listeners)

props 方式向子组件传递(父子组件) vuex 进行状态管理(父子组件非父子组件) vuex 非父子组件通信传递 Vue Event Bus,使用Vue实例,实现事件监听发布...后来再逛社区时候我又发现了还有第四种传递方式,inheritAttrs + $attrs + $listeners 附上原文链接Vue2.4版本中新添加attrs以及listeners属性使用 ...实践采坑中体会更有意思 inheritAttrs + $attrs + $listeners inheritAttrs :默认是 true 我解释就是:没有被子组件继承父组件属性,不会当做特性展示子组件根元素上面...说起来,听起来好像有些拗口,看截图看代码你就明白了 inheritAttrs :false ? ? inheritAttrs :false ? ?...$listeners 我理解就是:子组件可以触发父组件事件(不需要用什么那些麻烦vuex或者一个空 Vue 实例作为事件总线,或者又是什么vm.$on ) ?

1.5K30

vue $attrs使用

$attrs使用 vue $attrsvue2.40版本以上添加。 项目中有多层组件传参可以使用attrs,可以使代码更加美观,更加简洁,维护代码时候更方便。...可以获取到没有使用注册属性, “inheritAttrs: false`是不会影响 style class 绑定 以下是$attrs使用示例(父组件列表行数据传递给孙子组件展示) 父组件(...),中间层,作为父组件孙子组件传递中介,儿子组件给孙子组件添加v-bind="$attrs",这样孙子组件才能接收到数据 ...dom上显示属性 inheritAttrs: false, // 本组件需要接收从父组件传递过来数据,注意props里参数名称不能改变,必须父组件传递过来是一样 props: { isShow...,子组件不使用props接收,那么这些数据将作为子组件特性,这些特性绑定在组件HTML根元素上,vue2.40版本之后,可以通过inheritAttrs = false 来控制这些特性是否显示dom

1.3K60

Vue ,使用 $attrs 构建高级组件

这节课,我们来看下 Vue3 $attrs 属性。首先,我们会介绍它用途以及它实现与 Vue2 有哪些不两同点,并通过事例来加深对它理解。...$attrs 也可以被看作是一个安全网,它可以捕获任何我们没有组件声明东西。...对象 不包含 class 属性 而 Vue3 attrs 对象包含了除组件所声明 props emits 之外所有其他 attribute,这有利于我们方便使用这些属性。...$attrs 救场 本文开头,我们介绍了 $attrs。它是一个存放所有 "未声明"属性事件地方,而这正是我们需要解决问题。...inheritAttrs: false 默认情况下,任何被传递给组件额外参数都会自动应用于根元素(以及所有有 $attrs 绑定元素)。

2.4K10

Vue $attrs、$listeners 详解及使用

之所以要提到这两个属性,是因为两者出现使得组件之间跨组件通信不依赖 vuex 事件总线 情况下变得简洁,业务清晰。...props 方式向子组件传递,B to A 通过 B 组件 $emit, A 组件 v-on 方式实现; 通过设置全局 Vuex 共享状态,通过 computed 计算属性 commit mutation...方式实现数据获取更新,以达到父子组件通信目的; Vue Event Bus,使用 Vue 实例,实现事件监听发布,实现组件之间传递; 往往数据不需要全局情况而仅仅是父子组件通信时,...出现解决就是第一种情况问题,B 组件在其中传递 props 以及事件过程,不必写多余代码, 仅仅是将 $attrs 以及 $listeners 向上或者向下传递即可。...(简单说,inheritAttrs:true 继承除 props 之外所有属性;inheritAttrsfalse 只继承 class style 属性) $attrs–继承所有的父组件属性

1.5K80

如何构建运行良好Vue组件

另一方面,因为这些组件大多数是从特定情况而来,并且不是所有人都有跨多重环境重用组件设计经验,所以这些组件许多东西都不能很好地与Vue生态系统配合使用。 “很好”是什么意思?...为此,我们告诉组件默认情况下不要应用属性,而是直接使用$attrs对象应用它们, JS 代码: export default { inheritAttrs: false, } 模板 <div...: falsev-bind="$attrs",浏览器得到结果如下 ?...此处有两处异常: 父组件设置placeholder等属性没有传到子组件; 父组件设置属性传递给了子组件根元素,即label,而label是不需要 attrsinheritAttrs:false...即分别用来解决这两个问题首先,inheritAttrs:false解决子组件根元素继承父元素属性;其次,子组件添加了v−bind=" 接受浏览器键盘导航规范 可访问性键盘导航是Web开发中最常被遗忘部分之一

3.7K20

Vue组件间通信方式浅析

前言 Vue组件库开发过程Vue组件之间通信一直是一个重要的话题,虽然官方推出 Vuex 状态管理方案可以很好解决组件之间通信问题,但是组件库内部使用 Vuex 往往会比较重,本文将系统罗列出几种不使用...因为 ComponentC props 声明了 name 属性,$attrs 会自动排除掉在 props 声明属性,并将其他属性以对象形式输出。...说白了就是一句话,**$attrs 可以获取父组件绑定非 Props 属性**。 一般使用时候会同时 inheritAttrs 属性配合使用。...**如果你不希望组件根元素继承 attribute,你可以组件选项设置 inheritAttrs: false**。... ComponentB 添加了 inheritAttrs=false 属性后,ComponentB dom结构可以看到是不会继承父组件传递过来属性: image.png 如果不加上 inheritAttrs

1.6K10

vue组件通信6种方式总结(常问知识点)1

前言Vue组件库开发过程Vue组件之间通信一直是一个重要的话题,虽然官方推出 Vuex 状态管理方案可以很好解决组件之间通信问题,但是组件库内部使用 Vuex 往往会比较重,本文将系统罗列出几种不使用...因为 ComponentC props 声明了 name 属性,$attrs 会自动排除掉在 props 声明属性,并将其他属性以对象形式输出。...说白了就是一句话,$attrs 可以获取父组件绑定非 Props 属性。一般使用时候会同时 inheritAttrs 属性配合使用。...如果你不希望组件根元素继承 attribute,你可以组件选项设置 inheritAttrs: false。... ComponentB 添加了 inheritAttrs=false 属性后,ComponentB dom结构可以看到是不会继承父组件传递过来属性:图片如果不加上 inheritAttrs=false

57230

vue3与vue2区别

, render}) v-model代替以前v-model.sync vue3v-model用法 要求: 3.1. props属性名任意,假设为x 3.2....props.value) } return {toggle} } Vue3属性绑定 默认所有属性都绑定到根元素 使用inheritAttrs: false可以取消默认绑定 使用[...使用场景 vue2我们父组件绑定click事件,子组件必须内部触发click,而vue3父组件绑定子组件根元素上也会跟着绑定 ButtonDemo.vue ​你好 ​ setup() {...{ inheritAttrs: false } 如果想要一部分属性绑定在button上一部分在div上就需要在setup里 Button.vue <template...(image-92bd2b-1628264866650)] 上图中我们props里声明了size,所以attrs里就没有size了 当我们html标签只写属性而不赋值时候,props支持string

65210

Vue 组件间通信方式

前言 Vue 组件库开发过程Vue 组件之间通信一直是一个重要的话题,虽然官方推出 Vuex 状态管理方案可以很好解决组件之间通信问题,但是组件库内部使用 Vuex 往往会比较重,本文将系统罗列出几种不使用...因为 ComponentC props 声明了 name 属性,$attrs 会自动排除掉在 props 声明属性,并将其他属性以对象形式输出。...说白了就是一句话,$attrs 可以获取父组件绑定非 Props 属性。一般使用时候会同时 inheritAttrs 属性配合使用。...如果你不希望组件根元素继承 attribute,你可以组件选项设置 inheritAttrs: false。... ComponentB 添加了 inheritAttrs=false 属性后,ComponentB dom 结构可以看到是不会继承父组件传递过来属性:如果不加上 inheritAttrs=false

41820

四个Vue写法优化技巧

watch优化写法 我们平时总会遇到组件创建时获取列表,筛选项改变后刷新列表需求,watch逻辑,还要在组件created()再执行一遍,以下写法解决此痛点。...开发大型应用时,很多页面用到很多公共UI库组件,按照Vue原本写法,每种组件都要在每个页面引用一次,真是好累,如何省事偷懒呢?...// allImport.js import Vue from 'vue' function capitalizeFirstLetter(string) { // 此函数用途是首字符大写,baseInput...注意:默认父作用与不被认为是props属性将会回退到子组件根元素上,也就是例子label上,需在当前子组件Vue内部设置inheritAttrs: false good export default { inheritAttrs: false, computed: { selfListeners()

1.5K60

Vue案例引发「嵌套组件」通信简单方式

既然项目中存在很多组件,而且又是相对独立,但组件间肯定是存在数据传递交互。Vue给我提供比较多方式去进行组件间交互通信。...不过 Vue 2.4.0 版本添加了 2 个属性「$attrs」与「$listeners」,使用它们进行嵌套组件(祖孙)通信是一个不错选择,接下来我们就看看它们是什么,以及如何使用。 1....当一个组件没有声明任何 prop 时,这里会包含所有父作用域绑定 (class style 除外),并且可以通过 v-bind="$attrs" 传入内部组件——创建高级别的组件时非常有用。...简单来说:$attrs 与 $listeners 是两个「对象」,$attrs 里存放是父组件绑定非 Props 属性,$listeners里存放是父组件绑定非原生事件。...那如何避免呢?很简单,你可以组件选项设置 inheritAttrs: false。 import ComponentC from ".

86620
领券