解决深层次组件间的通信 $attrs, $listeners

inheritAttrs

在谈及深层次组件通信之前先说一下 inheritAttrs, 这个属性在官网中是这样解释的:

默认情况下父作用域的不被认作 props 的特性绑定将会 ‘回退’ 且作为普通的 HTML 特性应用在子组件的跟元素上。 当撰写包裹一个目标元素或者另一个组件的组件时,这可能不会总是符合预期行为。 通过设置 inheritAttrsfalse, 这些默认行为将会被去掉。 而通过实例属性 $attrs 可以让这些特性生效, 而且可以通过 v-bind 显性的绑定到非跟元素上。 (注意:这个选项不影响 classstyle 绑定)

不愧是官方的,看了几遍真的很难理解,还是通过 demo 来看一下吧:

子组件

<template>
   <div>{
  
  {val1}} </div>
</template>
<script>
export default {
  name: "child",
  props: ["val1"]
};
</script>

父组件

<template>
  <div class="hello">
     <child :val1="val1" :val2="val2"></child>
  </div>
</template>

<script>
import Child from "./child";
export default {
  components: {
    Child
  },
  data() {
    return {
      val1: "props val1",
      val2: "props val2"
    };
  }
};
</script>

父组件向子组件传递了 val1 val2 两个参数, 但是在 子组件内部 props 只接收了一个参数 val1, 并没有接收 val2, 没

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值