vue同辈组件之间通信

1、新建event.js

import Vue from "vue"

export default new Vue()

2、使用event.$emit,举例子

<template>
  <div>
    <input v-model="title" type="text">
    <button @click="add">增加</button>
  </div>
</template>

<script>
import event from './event'
export default {
    data(){
        return{
            title:''
        }
    },
    methods:{
        add(){
            //自定义组件,同辈之间传信
            event.$emit('addTitle',this.title)
            this.title=''
        }
    }
}
</script>

<style>

</style>

3、监听数据event.$on,举例子

<template>
  <div>
    <ul v-for="(item,index) in list" :key='index'>
        <li>{{item.id}}{{item.city}}</li>
    </ul>
  </div>
</template>

<script>
import event from './event'
export default {
    props:{
        list:{
            type:Array,
            default(){
                return []
            }
        }
    },
    mounted(){
        event.$on('addTitle',this.addTitleHandler)
    },
    methods:{
        addTitleHandler(val){
            console.log('addTitleHandler',val);
        }
    },
    beforeDestroy(){
        //及时销毁,否则可能造成内存泄露
        event.$off('addTitle',this.addTitleHandler)
    }

}
</script>

<style>

</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值