vue组件之间的传值

1.vue非父子组价传值

非父子组件传值需要定义公共的实例文件sors.js,作为中间仓库来传值,要不然组件之间达不到传值效果。

公共sors.js

//sors.js
import vue from 'vue'
export default new Vue()

组件A:

<template>
    <div>
        A组件:
        <span>{{elementValue}}</span>
        <input type='button' value='点击' @click='onElement'>
    </div>
</template>
<script>
    //引入公共文件sors.js,来作为中间传达的桥梁
    import Sors from './sors.js'
    export default {
        data(){
            return {
                elementValue:1
            }
        },
        methods:{
            onElement:function(){
                Sors.$emit('result',this.elementValue)
            }
        }
    }
</script>

组件B:

<template>
    <div>
        B组件:
        <input type='button' value='点击' @click='getData'>
        <span>{{name}}</span>
    </div>
</template>
<script>
    //引入公共文件sors.js,来作为中间传达的桥梁
    import Sors from './sors.js'
    export default {
        data(){
            return {
                name:0
            }
        },
        mounted:function(){
            //使用$on来接收参数
            var that = this;
           Sors.$on('val',(data)=>{
               that.name = data 
            })
        }
        methods:{
            getData:function(){
               this.name++
            }
        }
    }
</sccript>

2.vue父组件给子组件传值

父组件:

<template>
    <div>
        父组件:
        <input type='text' v-model='name'>
        

        <!-- 引入子组件 -->
        <child :inputName ='name'></child>
    </div>
</template>
<script>
    import Child './child'
    export default {
        components:{
            Child 
        },
        data(){
            return {
                name:''
            }
        }
    }
</script>

子组件:

<template>
    <div>
        子组件:
        <span>{{inputName}}</span>
    </div>
</template>
<script>
    import Child './child'
    export default {
        //接收父组件传过来的值
        props:{
            inputName:String,//接受的数据类型
            required:true
        }
    }
</script>

3.子组件给父组件传值

子组件:

<template>
    <div>
        子组件:
        <span>{{childValue}}</span>
        <!-- 定义一个子组件传值的方法-->
        <input type='button' value='点击' @click='onChild'>
        
    </div>
</template>
<script>
    export default {
        data(){
            return {
                childValue:'我是子组件的数据'
            }
        },
        methods:{
            onChild () {
               //childByValue是在父组件on监听的方法
               //第二个参数this.childValue是需要传的值
               this.$emit('childByValue',this.childValue)
            }
        }
    }
</sccript>

父组件:

<template>
    <div>
        父组件:
        <span>{{name}}</span>
        <!-- 引入子组件 定义一个on的方法监听子组件的状态-->
        <child v-on:childByValue = 'childByValue'></child>
        
    </div>
</template>
<script>
import child from './child'
    export default {
        components:{
            child
        },
        data(){
            return {
                name:''
            }
        },
        methods:{
            childByValue:function (childValue) {
               //childValue是在子组件传递过来的值
               this.name = childValue
            }
        }
    }
</sccript>

 

Vue组件之间传值Vue框架中的一个重要功能,它允许不同的组件之间共享数据,实现数据的传递和交互。下面是Vue组件之间传值的最全面解释: 1. 父组件向子组件传值:父组件通过props属性向子组件传递数据,子组件通过props属性接收父组件传递的数据。这种方式适用于父子组件之间的数据传递,父组件可以向多个子组件传递数据。 2. 子组件向父组件传值:子组件通过$emit方法触发事件,父组件通过v-on指令监听事件,并通过事件对象获取子组件传递的数据。这种方式适用于子组件向父组件传递数据,子组件可以触发多个事件,父组件可以监听多个事件。 3. 兄弟组件之间传值:使用一个共同的父组件作为中介,通过props属性和$emit方法实现兄弟组件之间的数据传递。这种方式适用于兄弟组件之间的数据共享,需要注意父组件的数据传递和事件监听。 4. 使用Vuex进行状态管理:Vuex是Vue的状态管理库,可以实现多个组件之间的数据共享和状态管理。通过Vuex的store对象存储数据和状态,并通过mutations、actions和getters等方法实现数据的修改和获取。 5. 使用事件总线:通过Vue的事件机制,创建一个事件总线,多个组件可以通过事件总线进行数据传递。通过Vue实例的$emit方法触发事件,通过Vue实例的$on方法监听事件,并通过事件对象获取数据。 以上是Vue组件之间传值的最全面解释,需要根据具体的场景选择不同的传值方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值