Vue.js学习笔记(拾壹)

97 阅读1分钟

【6月日新计划更文活动】第1天

组件通信

1、props$emit

    适用与父子组件之间传值,父组件通过属性的方式将值传递给子组件,子组件通过props接收父组件的传值,子组件通过 $emit 自定义事件的方式向父组件传值,父组件通过监听该事件接收子组件传递的值。

2、$parent 获取父组件值

    子组件通过 this.$parent 获取父组件的属性和数据,还可以获取父组件身上的方法。

3、$children$refs 获取子组件值

    直接获取子组件的属性、方法,不仅限于数据。使用 children会返回当前组件所包含的所有子组件数组        使用children 会返回当前组件所包含的所有子组件数组        使用 refs ,需要在子组件上添加 ref 属性,类似于操作 DOM 节点。

4、事件总线

    在 main.js 中注册全局事件总线 Vue.protorype.$bus = this 通过事件总线传递数据的方式可以实现任何组件之间的通信。

5、Vuex状态管理

6、localStorage

    localStorage是H5的数据存储方式,数据存储在本地。

全局事件总线

GlobalEventBus: 1、一种组件间通信方式,适用于:任意组件间通信

image.png 2、安装全局事件总线:

new Vue({
......
  beforeCreate() {
    // 在创建之前添加
    Vue.prototype.$bus = this // 安装全局事件总线。$bus 就是当前应用的 vm
  },
 ......
}).$mount('#app')

3、使用事件总线:

1、接收数据:A组件想接收数据,则A组件中给$bus 绑定自定义事件,事件的回调留在A 组件自身
 methods: {
   demo(data){......}
   },
 ......
 mounted() {
   this.$bus.$on("xxxx", this.demo);
   },
 2、提供数据:this.$bus.$emit('xxx',数据)

4、最好在 beforeDestroyed 钩子中,用 $off 解绑当前组件所用到的事件

beforeCreate() {
  this.$bus.$off("xxxx");
 },

消息订阅与发布

​ 1、订阅消息:消息名 2、发布消息:消息内容 pubsub-js

1、一种组件间通信的方法,适用于:任意组件间通信

2、使用步骤: ①、安装 pubsub: npm i pubsub-js ②、引入:import pubsub from "pubsub-js";

3、接收数据:A 组件想接收数据,则在 A 组件中订阅消息,订阅的 回调留在A组件自身

methods(){
    demo(data){......}
}
......
mounted(){
    this.pid = pubsub.subscribe('xxx', this.demo) //订阅消息
}

4、提供数据: pubsub.publish("xxx", 数据);

5、最好在 beforeDestroy 钩子中,用 pubsub.unsubscribe(this.pubId) 去 取消订阅