美文网首页
Vue - 兄弟组件传值

Vue - 兄弟组件传值

作者: ElricTang | 来源:发表于2019-10-17 16:00 被阅读0次

1. 使用中间Vue实例实现兄弟传值。

  • 创建一个用于转发数据的中间Vue实例bus
  • 在子组件1中使用bus.$emit()发布事件。
  • 在子组件2中使用bus.$on()监听子组件1发布的事件。
<!DOCTYPE html>
<html>
    <head>
       <meta charset="UTF-8">
       <title></title>
       <script src='../node_modules/vue/dist/vue.js'></script>
       <script src='../node_modules/vue-resource/dist/vue-resource.js'></script>
    </head>
    <body>
        <div id='app'>
            <child1></child1>
            <child2></child2>
        </div>
        <script>
            var bus = new Vue({ });
            var child1 = {
                template:'<button @click="send">发送数据给子组件child2</button>',
                methods:{
                    send(){
                        bus.$emit('send-data','hello world from child1');
                    }
                }
            };
            var child2 = {
                template:'<p>{{msg}}</p>',
                data(){
                    return {
                        msg:''
                    }
                },
                created(){
                    bus.$on('send-data',this.get);
                },
                methods:{
                    get(data){
                        this.msg = data;
                        console.log(`接收到来自child1的数据-${data}`);
                    }
                }
            };
            var vm = new Vue({
                el:'#app',
                components:{
                    child1,
                    child2
                }
            })
        </script>
    </body>
</html>

2. 借助父组件转发

  • 子组件1通过this.$emit()发布事件
  • 父组件通过监听事件获取到子组件1的数据
  • 父组件通过props的方式把子组件1的数据转发给子组件2
<!DOCTYPE html>
<html>
    <head>
       <meta charset="UTF-8">
       <title></title>
       <script src='../node_modules/vue/dist/vue.js'></script>
       <script src='../node_modules/vue-resource/dist/vue-resource.js'></script>
    </head>
    <body>
        <div id='app'>
            <child1 @send-data="get"></child1>
            <child2 :message="msg"></child2>
        </div>
        <script>
            var child1 = {
                template:'<button @click="send">发送数据给子组件child2</button>',
                methods:{
                    send(){
                        this.$emit('send-data','hello world from child1');
                    }
                }
            };
            var child2 = {
                template:'<h1>{{message}}</h1>',
                props:{
                    message:String
                }
            };
            var vm = new Vue({
                el:'#app',
                components:{
                    child1,
                    child2
                },
                data:{
                    msg:'',
                },
                methods:{
                    get(data){
                        this.msg = data;
                    }
                }
            })
        </script>
    </body>
</html>

3. 使用Vuex管理状态

  • Vuex统一管理共享数据,具体使用请参考Vuex官网 传送门

相关文章

  • Vue组件之间的传值

    Vue父子组件之间的传值(props)兄弟组件 VUEX

  • Vue.js 父子组件传值 . 兄弟组件传值

    概述 vue中组件之间的传值传值情况主要有以下三种 父组件向子组件传值子组件向父组件传值兄弟组件之间相互传值或者是...

  • Day5 拾遗 emit

    vue emit多个参数利用arguments来获取子组件传值或者兄弟组件通过emit传值, 通过argument...

  • 组件通信

    vue传值可分为父子之间传值、兄弟组件之间传值、跨代组件之间传值 1.父子之间传值:可以使用$emit/props...

  • Uniapp兄弟组件传值

    兄弟组件a.vue和b.vue之间的传值方式 a.vue b.vue

  • 2020-03月前端面试题

    vue相关 vue父子组件传值方式有哪些? 兄弟组件间如何传值? vuex是用来干什么的? vuex核心模块有哪些...

  • vue的父子传值和使用vuex兄弟传值

    在父组件中引入子组件 父传子 父组件 子组件 子传父 子组件 父组件 兄弟传值 兄弟之间可以通过vue官网的方法,...

  • VUE03

    Vue组件 组件的创建 组件的指令以及事件绑定 父子组件创建 父子组件通信 兄弟组件的传值 动态组件

  • vue组件传值

    1.兄弟组件传值 兄弟组件之间就需要一个中间值,我在这里称为bus。在vue文件main.js中,我们利用 Vue...

  • 花里胡哨的vue传值

    前言 在vue项目中,不可避免的会在不同组件之间进行传值 ,不同需求下有各式各样的传值方式。就比如说,兄弟组件传值...

网友评论

      本文标题:Vue - 兄弟组件传值

      本文链接:https://www.haomeiwen.com/subject/iaspmctx.html