vue组件间的通信案例
2018-03-27 21:16
701 查看
组件间通信方式汇总
子向父组件的通信方式
//当子组件中$emit(“sendChildEvent”,data) 通过Click事件触发
//父组件监听自定义事件sendChildEvent , 获取数据
- Bus.js方式
一个简单的案例:两个按钮分别为不同组件。
主要思路:
Bus.$emit(event,data) 触发自定义事件
Bus.$on(event,function(data){}) 监听自定义事件,并通过回调获取传递数据
//首先新建Bus.js 文件
//分别在兄弟组件中引用Bus.js 文件
这里仅讨论兄弟组件间的数据传递,对全局变量的引用可以忽略。
① 全局this的写法可以参考这里
2。 Vue声明周期可以参考https://blog.csdn.net/weixin_37064409/article/details/78881045“>这里
vuex方式
父子组件间的通信方式
父向子组件的通信方式// 在父组件中定义props数据,并绑定在子组件上 <template> <div id="parent"> <input type="text" v-modal="parentMsg"/> <Child v-bind:parentMsg="parentMsg"></Child> </div> <template> <script> import Child form "./component/Child"; export default { name:"Parent", data(){ return { parentMsg:"this message from parent", } } } </script> // 子组件通过props接收父组件传递数据 <template> <div id="child"> {{parentMsg}} //展示接收数据 </div> </template> <script> export default { name:"Child", props:{ parentMsg :{ type: String, // prop 指定验证规则。 require : true, default : "" } }, data(){ return { } } } </script>
子向父组件的通信方式
//子组件通过$emit传递数据 <template> <div id="child"> <button @click="childEvent">Btn</button> //自定义childEvent事件 触发时传递数据 </div> </template> <script> export default { name:"Child", data(){ return { childMsg:"this message from Child", } } methods:{ childEvent:function(){ this.$emit("sendChildEvent",this.childMsg); //触发当前实例上的事件<sendChildEvent>。附加参数都会传给监听器回调。 } } } </script> //父组件通过vm.$emit( event, […args] )//监听自定义事件event,获取子组件传递数据 <template> <div id="Parent"> <Child @sendChildEvent="parentEvent"></Child> //触发自组件自定义事件 </div> </template> <script> export default { name : "Parent", data(){ return { parentMsg : "default msg", } }, methods:{ parentEvent:function(data){ this.parentMsg = data; //子组件数据通过回调传递给this.parentMsg } } } </script>
//当子组件中$emit(“sendChildEvent”,data) 通过Click事件触发
//父组件监听自定义事件sendChildEvent , 获取数据
兄弟组件间的通信方式
各组件为了保证各自的独自性,不允许直接传递数据, 如果小项目建议直接使用Bus方式,如果是大型项目最好用vuex方式处理 state
- Bus.js方式
一个简单的案例:两个按钮分别为不同组件。
主要思路:
Bus.$emit(event,data) 触发自定义事件
Bus.$on(event,function(data){}) 监听自定义事件,并通过回调获取传递数据
//首先新建Bus.js 文件
import Vue from "vue" export default new Vue
//分别在兄弟组件中引用Bus.js 文件
// module 1 <template> <div id="Module1"> <button @click="incrementHandler">{{count}}</button> </div> </template> <script> import Bus from "./Bus.js" export default { name:"BtnModule1", data(){ return { count:5, } }, methods : { incrementHandler: function () { if (this.count < 10) { this.count++; } Bus.$emit("increment1", this.count); // Bus.$emit触发 自定义事件 } }, created(){ Bus.$on("increment2", function (data) { //监听组件btn2事件 $that.count1.count = 10 - data; }); }, beforeCreate() { $that.count1 = this //创建全局变量,接收this --》 ① } } </script> //Btn2 以同样的方式创建
这里仅讨论兄弟组件间的数据传递,对全局变量的引用可以忽略。
① 全局this的写法可以参考这里
2。 Vue声明周期可以参考https://blog.csdn.net/weixin_37064409/article/details/78881045“>这里
vuex方式
相关文章推荐
- vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例
- vue组件父子之间相互通信案例
- vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例
- vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例
- vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例
- Vue 组件通信(子组件向父组件传递数据)
- vue2.0父子组件以及非父子组件如何通信
- Vue2.0组件之间通信(转载)
- vue2.0组件之间传值、通信的多种方式(干货)
- Vue1.0学习总结(4)———Vue1.0自定义组件、Vue1.0组件之间的通信、slot的使用
- Vue组件间通信1--props
- vue中的event bus非父子组件通信
- vue组件详解(三)——组件通信
- Vue中父组件向子组件通信
- Vue——任意组件间的通信
- Vuejs——(10)组件——父子组件通信
- Vue 父子组件之前的数据通信
- vue prop 父组件向子组件通信
- Vue学习--组件通信
- vue父子组件通信