Vue组件之间数据处理:父向子,子向父,还有同级和相互

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/devincob/article/details/80312743

用vue-cli建个新项目吧,怎么用vue-cli建项目,贴一张图
这里写图片描述
好了,继续贴图,目录里面有个components的玩意,它叫组件 你写的大组件小组件都可以放这里,不是不能放别的地方,只是放这里方便管理,约定俗成的玩意,这里你先建立几个组件吧,累死如 这样
这里写图片描述

先讲一句
每个 Vue 实例都实现了事件接口,即:
使用 $on(eventName) 监听事件
使用 $emit(eventName) 触发事件

Vue 的事件系统与浏览器的 EventTarget API 有所不同。尽管它们的运行起来类似,
但是 $on 和 $emit 并不是addEventListener 和 dispatchEvent 的别名,
另外,父组件可以在使用子组件的地方直接用 v-on 来监听子组件触发的事件。

先说 什么呢?说难一点点的吧,老师说先说男的,好理解女的
那就同级兄弟之间数据的传递,刚才贴了兄弟之一,再贴一下它老弟
这里写图片描述
好了,老大想搞老二?他们之间怎么搞呢?
建个房啊,公共枢纽站多方便以后也划算
你可以随便建 我就不说了,我在src/assets/下创建一个js文件,内容如下
这里写图片描述
嗯,内容虽然少,但是我不想写啊,也防止你直接copy啊,哈哈
(eventBus中我们创建了一个新的Vue实例,以后它就承担起了组件之间通信的桥梁了,也就是中央事件总线。
(这句话不是我说的,不过的却是eventBus的确是这意思)

1、一句话就是我们在响应点击事件的sendMsg函数中,用$emit触发了一个自定义的userDefinedEvent事件,
并传递了一个字符串参数,而$emit实例方法触发当前实例(这里的当前实例就是bus)上的事件,附加参数就会传给监听器回调。

所以在 第二个组件里
在mounted中,监听了userDefinedEvent,并把传递过来的字符串参数传递给了$on监听器的回调函数
好了,三分归元气当然是把组建放到父级上去,注册这两个组件,并添加这两个组件的标签
这里写图片描述
算了,贴一下 总结

1、创建一个事件总线,例如demo中的eventBus,用它作为通信桥梁
2、在需要传值的组件中用bus.$emit触发一个自定义事件,并传递参数
3、在需要接收数据的组件中用bus.$on监听自定义事件,并在回调函数中处理传递过来的参数

好像有点长,算了,快一点,父子之间传递,父向子,子向父我这里放在了一个组件里
这里写图片描述
同时我们看到app.Vue里面的蓝2 是通过绑定的形式直接传进子组件的,不过是在子组件里的pros里面接受一下就能使用
这里写图片描述
里面的红1是子组件向父组件传值后(@reduce-parent) 是v-on 来监听子组件触发的事件,别瞎搞
至于下面methods里面写的,上面也说了,也不说了,好像完了…

猜你喜欢

转载自blog.csdn.net/devincob/article/details/80312743