#app{width:950px;height:600px;box-sizing:border-box;border:3pxdashed#e9e9e9;background-color:#cde;margin:50px;}问题描述祖孙之间常用的三种通信方式:vuex关于vuex,笔者之前写过一篇文章。附上链接:https://segmentfault.com/a/11...Vue实例总线事件Vue实例总线不仅可以用于祖孙组件之间的通信,还可以用于兄弟组件之间的通信。使用范围还是蛮广的,笔者之前写过一篇关于vue实例总线的使用的文章,以兄弟组件之间的通信为例。附上链接:https://segmentfault.com/a/11...$attrs和$listeners也可以这样写,请继续阅读官方对$attrs和$listeners的定义,我们先看看如何官方定义,这里截图:官方地址也附上https://cn.vuejs.org/v2/api/?...开个玩笑,官方定义有点晦涩。下面我们将结合实际例子来讲解$attrs和$listeners的用法。所以我们需要先搭建一个项目,结构是祖孙组件数据传输项目结构项目结构图我们知道,项目最外层的vue组件就是App。Vue是父组件,sun.vue是孙组件。即爷爷、父亲、儿子的祖孙关系成分。在这样的结构中,我们实现了从祖父组件到孙子组件的数据传递。$attrs的用法$attrs我的理解是:一般情况下:父组件通过v-bind绑定一个数据给子组件,子组件通过props接收,可以在子组件的html中使用。但是,如果父组件将其v-binding到子组件,而子组件没有使用props接收它怎么办?注意:此时父组件传递过来的数据会被挂载(赋值)到子组件自带的对象$attrs中,所以:$attrs是一个容器对象,这个容器对象会存储:parentcomponent代码层理解子组件接收到的数据,无需props声明。我们使用上面搭建的项目,父组件使用App.vue,子组件使用fu.vue。(其实项目中的两个组件就是父组件和父组件,但是父组件其实是父子组件的一种关系,也可以这样使用)父组件的代码在父组件中.我们向父组件传递4个数据。msg1、msg2、msg3、msg4,它们的数据类型分别是string、string、array、object":msg3="msg3":msg4="msg4">