博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue2.0组件通信
阅读量:6265 次
发布时间:2019-06-22

本文共 1752 字,大约阅读时间需要 5 分钟。

组件通信

组件通信方式类别

  1. VueJs提供的props和自定义事件
  2. eventbus
  3. vuex
通信方式 区别
props 用于父组件传递数据给子组件
自定义事件 用于子组件向父组件通信
eventBus 适用于非父子组件通信的简单场景,使用一个空的vue实例作为中央事件总线
Vuex 状态管理,适用于复杂场景

props

父组件传递数据给子组件:

1.子组件显示地用props选项申明获得的数据:

export default {  name: 'vheader',  props:['myMessage','myData'],}

2.父组件传递数据

至此,子组件将获取到数据vue2.0porpsdownData

自定义事件

每个vue实例都实现了事件接口:

  • $on(eventName)监听事件(不能用 $on 侦听子组件释放的事件,而必须在模板里直接用 v-on 绑定)
  • $emit(eventName)触发事件
    例如:
//App.vue 父组件
import buttonCounter from ‘./buttonCounter.vue’exoprt default{ name:’app’, data(){ return{ Counter:0 } }, componts:{ buttonCounter:buttonCounter }, methods(){ incrementTotal(){ This.total += 1 } }}
//buttonCounter.vue 子组件
exoprt default{ name:’buttonCounter’, methods(){ incrementCounter(){ this.$emit(‘increment’) } }}

注意点

1.每次父组件更新,子组件所有prop会更新为最新值。因此,不能在子组件内部改变prop,如果做了,vue会在控制台给出警告。
2.注意在 JavaScript 中对象和数组是引用类型,指向地址,如果 prop 是一个对象或数组,在子组件内部改变它会影响父组件的状态。

eventbus

1.创建中央事件总线eventbus.js:

import Vue from 'vue'export default new Vue()

2.创建v-component-a.vue子组件

3.创建v-component-b.vue子组件

4.在父组件注册两个子组件

注意点:

eventbus.$on('getName',(arg)=>{        this.getMyMsg(arg) })

若写成es6的箭头函数,则直接写this,否则需要先在eventbus.$on之前将this赋值给let self=this;

Vuex

转载地址:http://eucpa.baihongyu.com/

你可能感兴趣的文章
Java之Static静态修饰符详解
查看>>
修改weblogic部署的应用名称
查看>>
aaronyang的百度地图API之LBS云与.NET开发 Javascript API 2.0【基本地图的操作】
查看>>
Java Nio 多线程网络下载
查看>>
C++不让程序一闪而过
查看>>
C# 中的枚举类型 enum (属于值类型)
查看>>
[Debug] Use Snippets to Store Behaviors in Chrome DevTools
查看>>
【Java面试题】3 Java的"=="和equals方法究竟有什么区别?简单解释,很清楚
查看>>
通用性好的win2003序列号: (推荐先用这个里面的)
查看>>
Chromium Embedded Framework中文文档 (升级到最新的Chrome)
查看>>
WPF Command CanExecute 的执行逻辑
查看>>
更为快捷的Excel操作方式 快捷键 Alt使用技巧动画图解
查看>>
程序员们最易犯的10种错误
查看>>
面试必考题!你知道CSS实现水平垂直居中的第10种方式吗?
查看>>
超多惊喜!苹果 iPhone8 最新渲染图曝光
查看>>
你想要不想要?OPPO R11将搭配前后2000万像素镜头!
查看>>
Payara基金会发布全面支持MicroProfile 2.0的5.183版
查看>>
360金融宣布采用新会计准则 2018年前三季度净利11亿
查看>>
非洲小哥见到马云 竟然提了这样的要求?
查看>>
收购大战:高通承诺将年收入增长率提至8%
查看>>