【前端小卡】对vue中$attrs与 inheritAttrs的理解

首先引入官方解释
包含了父作用域中不作为 prop 被识别 (且获取) 的特性绑定 (class 和 style 除外)。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class 和 style 除外),并且可以通过 v-bind="$attrs" 传入内部组件——在创建高级别的组件时非常有用。

####让我们用实例来进行说明

//app.vue
<template>
  <div id="app">
    <hello-world class="dark" :test="testa" :testb="testb" @welcome="sayHi" />
  </div>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  data(){
    return{
      testa:'hello',
      testb:'ccc'
    }      
  },
  components: {
    HelloWorld
  }
}
</script>

//helloworld.vue
<template>
  <div @click="hi">
    {{test}}
    {{$attrs.testb}}
  </div>
</template>

<script>
export default {
  //inheritAttrs: false,
  props:{
    test:{
      type:String,
      default:'hi'
    }
  }
}
</script>  

让我简单说明一下,我们看到子组件中prop没有接收testb,但是我们可以通过$attrs可以获取到testb,但是有一个缺点,我们可以看到 testb仍然出现div属性中
在这里插入图片描述
假如我们将子组件的inheritAttrs: false,让我们再看效果
在这里插入图片描述
看到效果了吧,有了 inheritAttrs: false 和 $attrs,你就可以手动决定这些特性会被赋予哪个元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值