inheritAttrs、$attrs和$listeners使用场景:

组件传值,尤其是祖孙组件有跨度的传值。

(1)inheritAttrs

属性说明:https://cn.vuejs.org/v2/api/#inheritAttrs

说明比较晦涩。

组件传值一般是通过props传值的。inheritAttrs默认值为true,true的意思是将父组件中除了props外的属性添加到子组件的根节点上(说明,即使设置为true,子组件仍然可以通过$attr获取到props意外的属性)。示例代码:

grandpaDom.vue:

<template>
<div>
<father-dom
 :foo="foo"
:coo="foo"
v-on:upRocket="reciveRocket"
>
</father-dom>
</div>
</template>
<script>
import fatherDom from "./fatherDom.vue";
export default {
data() {
return {
foo:"Hello, world",
coo:"Hello,rui"
}
},
components:{fatherDom},
methods:{
reciveRocket(){
window.console.log('火箭发射成功!')
}
}
}
</script>

fatherDom.vue:

<template>
<div>
<p>------------fatherDom-------------</p>
<p>attrs:{{$attrs}}</p>
<p>foo:{{foo}}</p>
<p>------------fatherDom-------------</p>
<child-dom v-bind="$attrs" v-on="$listeners"></child-dom>
</div>
</template>
<script>
import childDom from "./childDom.vue";
export default {
name:'father-dom',
props:["foo"],
components:{childDom},
}
</script>

说明:grandpaDom.vue将foo和coo属性都放在fatherDom.vue上,但是fatherDom.vue的props值接收了foo,因此grandpaDom的coo属性显示在了fatherDom的根节点上。即:

接着将inheritAttrs:false后(请将fatherDom.vue添加inheritAttrs:false),coo属性就不会显示在fatherDom根节点上了。但是怎么获取到coo呢

这时就通过$attrs获取到到coo。

接着看孙组件childDom.vue:

<template>
<div>
<p>------------childDom-------------</p>
<p>coo:{{coo}}</p>
<button @click="startUpRocket">我要发射火箭</button>
<p>------------childDom-------------</p>
</div>
</template>
<script>
export default {
name: "childDom",
props: ["coo"],
methods: {
startUpRocket() {
this.$emit("upRocket");
window.console.log('我要发射火箭了。')
}
}
};
</script>

孙组件childDom.vue就可以通过props接收到coo属性了。

好,以上是总祖父--父亲--儿子向下传递值

那怎么儿子-父亲--祖父传递数据呢呢?

父亲组件使用$listeners传递。

最终祖父组件收到孙组件的事件了。

更多专业前端知识,请上 【猿2048】www.mk2048.com

vue inheritAttrs、$attrs和$listeners使用相关推荐

  1. Vue中 $attrs、$listeners使用和理解

    前言 提示:Vue中 常见的组件通信方式可分为三类: 父子通信 通常父子传值都是 通过prpos,子组件通过events接收 通过父链/子链 通信($parent/$chldren); ref也可以访 ...

  2. [vue] 说下$attrs和$listeners的使用场景

    [vue] 说下attrs和attrs和attrs和listeners的使用场景 <template><el-button v-on="$listeners" v ...

  3. html triggers的作用,Vue为什么要谨慎使用$attrs与$listeners

    前言 在 Vue 开发过程中,如遇到祖先组件需要传值到孙子组件时,需要在儿子组件接收 props ,然后再传递给孙子组件,通过使用 v-bind="$attrs" 则会带来极大的便 ...

  4. vue组件传值之$attrs、$listeners

    组件传值总结 props和emit:父子组件传值 provide和inject:父子组件或者爷孙组件传值 $parent,$root,$chidren:父子组件传值 vuex 事件总线(vue实例) ...

  5. Vue 新增的$attrs与$listeners的详解

    $attrs 包含了父作用域中不作为 prop 被识别 (且获取) 的特性绑定 (class 和 style 除外).当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class和 ...

  6. vue v-bind=“$attrs“、v-on=“$listeners“

    一.背景 在封装组件时候,经常要传递参数,调用事件.我们希望把主导权放在业务组件内,这是引入我们今天的主题: v-bind="$attrs" .v-on="$listen ...

  7. [vue]Extraneous non-emits event listeners (x) were passed to component but could not be automatica

    vue报错说: [Vue warn]: Extraneous non-emits event listeners (addToCart) were passed to component but co ...

  8. React中组件间通信的方式

    React中组件间通信的方式 React中组件间通信包括父子组件.兄弟组件.隔代组件.非嵌套组件之间通信. Props props适用于父子组件的通信,props以单向数据流的形式可以很好的完成父子组 ...

  9. vue 组件传值$attrs $listeners $bus provide/inject $parent/$children

    $attrs 包含了父作用域中不作为prop被识别的特性绑定,当一个组件没有声明props时,这里会包含所有父作用域的绑定, $listeneers 包含了父作用域中的v-on事件监听器,它可以通过v ...

最新文章

  1. cookie和session的代码实现
  2. tomcat和nginx的使用
  3. python对笔记本电脑的要求-笔记本电脑中多版本python的配置
  4. Linux内存管理 (2)页表的映射过程
  5. boost::fusion::map_tie用法的测试程序
  6. 安卓使用JNI-NDK
  7. Leansoft再发招贤令:面试官徐磊有话讲 | IDCF
  8. JUnit的内置Hamcrest Core Matcher支持
  9. 如何生成 Flink 作业的交互式火焰图?
  10. 服务监控 Spring Boot Actuator 介绍
  11. LeetCode-----用两个栈实现一个队列
  12. 软件测试人员的三重境界
  13. levedb 导入 mysql_leveldb研究3-数据库日志文件格式
  14. 用Netty实现RPC
  15. linux dprintk 日志,linux內核調試中的printk()函數詳解
  16. 2020年不能启动win7_包装车间2020年大修正式启动
  17. note20220227.docx
  18. 冯雪 手术机器人的应用_外科手术机器人发展及其应用
  19. 敏捷领导力2.0培训体会
  20. 漫画告诉你:区块链到底是什么?

热门文章

  1. php strlen 线程安全,浅析PHP中strlen和mb_strlen的区别
  2. 你是不是已经超纲了?一文解决JavaWeb中要求的HTML,是什么样的?
  3. 简洁明了!Java实现单向环形链表以解决约瑟夫环Josepfu问题
  4. 迈入JavaWeb第一步,Java网络编程基础,TCP网络编程URL网络编程等
  5. Java面向对象(4)--封装和隐藏
  6. linux启动weblogic指令,linux下如何启动和关闭weblogic .
  7. lda进行图片分类_LDA主题模型
  8. win7计算机管理找不到文件夹,Win7系统打开组策略提示找不到文件gpedit.msc怎么办...
  9. 深度学习框架Keras介绍及实战
  10. 初入WEBOTS半个月来的一点总结