• vue 组件通信


    vue组件通信方式

    1、vuex 通过vuex内的state对象定义共享属性,通过mutations/actions/getters对象内定义方法来修改state对象内的属性,需要使用共享属性的组件通过import {mapstate/mapmutations/getters/mapactions} 然后在页面中使用/调用,看详情

    2、父子组件之间:

      父组件 => 子组件 :在父组件中import子组件,component对象中加入子组件名称,在template中加上子组件标签,在子组件标签上绑定需要传输的属性,在子组件中通过props,就可以使用了。父组件调用子组件方法

      子组件 => 父组件:在子组件中通过this.$emit('parentObserve',params)广播自定义事件parentObserve,父组件中在组件标签上监听该事件,进行事件处理。this.$parent.event/props 调用父组件方法或者属性

    3、兄弟组件:

      a、新建一个js文件eventBus,js,事件车相当于一个中间件引入vue,new vue()并开放出来

    import Vue from 'vue'
    
    export default new Vue

      b、在需要通信的兄弟组件之间引入eventBus.js,

       兄弟组件a.vue

    import eventBus from '../eventBus.js'
    export
    default { data () { return { } }, created () { }, methods: { showChange (params) {   eventBus.$emit('searchData', params) //通过eventBus.$emit对外广播searchData事件,其他组件可以在created中通过eventBus.$on进行事件监听
        }
    } }

      c、兄弟组件b:注意:当卸载组件前要通过beforeDestroy将当前监听的事件删除掉,通过eventVue.$off(name)删除,因为就算组件被卸载但是监听事件不会被删除,而再次进入页面时又会添加新的事件监听,导致有多个事件监听,所以会多次触发事件程序。

    import eventBus from '../eventBus.js'
    export default {
    
        data () {
            return {
            }
        },
        created () {
            eventBus.$on('searchData', (params) => {//通过eventBus.$on监听searchData,并进行事件处理
           console.log('监听到a组件的searchData事件,并处理事件程序')
            })
        },
        methods: {
    
        }
    }
  • 相关阅读:
    Android之遍历SD卡所有文件显示在ListView
    Android之ViewPager
    控制ViewPager的切换速度
    Android中显示sd卡的图片和视频
    java中主线程等待所有子线程结束
    Android之ViewFlipper实现图片切换
    Android闹钟服务详解
    Gradle基本操作入手
    设计模式
    【CSON原创】 基于HTML5的小球物理测试系统
  • 原文地址:https://www.cnblogs.com/muzs/p/10729922.html
Copyright © 2020-2023  润新知