zoukankan      html  css  js  c++  java
  • Vue 组件通信

    父组件 -> 子组件

    props 

    <my-component :date="date"></my-component>

    注意:如果子组件定义props名称使用了驼峰命名,则需要在传值时改成 - 分开,因为html对大小写不敏感,例如

    <my-component :my-date="date"></my-component>

    * 但是在vue单文件组件中貌似是可以使用驼峰写法的

    子组件 -> 父组件

    子组件中直接修改props值可以成功,但是框架会抛出一个错误,所以不推荐

    推荐的做法:在父组件中定义一个修改props的方法,然后子组件调用父组件的方法

    1. 在子组件中直接调用父组件方法修改props值

    this.$parent.change(new Date())

    2. 子组件触发事件,在父组件中捕捉然后执行change方法

    父组件:

    <my-component :my-date="date" @changeDate="change"></my-component>

    子组件:

    this.$emit('changeDate', new Date())

    推荐使用第二种

    子组件 -> 子组件

    这种情况属于两个不相关的子组件之间的通信,我们无法通过props将两者关联起来,两种解决办法:

    1. vuex : 全局状态管理器

    2. 事件总线:EventBus

    定义:本质上就是实例化一个新的Vue对象,这个对象专门负责处理多组件之间的通信

    用法:

    // main.js
    Vue.prototype.$EventBus = new Vue()

    绑定一个eventBus到Vue对象,在页面中通过 on(注册),emit(触发)

    //component1
    this.$EventBus.$on('change', function(param){
      console.log('事件触发',param)
    })
    //component2
    this.$EventBus.$emit('change', 123)
  • 相关阅读:
    python基础易错题
    经典案例题2
    经典案例题1
    Http和Https的区别
    爬虫过程中需要注意的问题
    [转]项目规模估计方法介绍
    [转]23种设计模式总结
    [转]分布式session的几种实现方式
    [转]Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)
    [转]【Linux】Linux 目录结构
  • 原文地址:https://www.cnblogs.com/xiaoliwang/p/10631543.html
Copyright © 2011-2022 走看看