百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

1天让你精通vue(8 事件总线)

toyiye 2024-06-21 12:42 13 浏览 0 评论

一、webStorage

(1) 存储内容大小一般支持5MB左右(不同浏览器可能还不一样)

(2) 浏览器端通过 Window.sessionStorage 和 Window.localStorage 属性来实现本地存储机制。

(3) 相关API:

① xxxxxStorage.setItem('key', 'value') 该方法接受一个键和值作为参数,会把键值对添加到存储中,如果键名存在,则更新其对应的值。

② xxxxxStorage.getItem('person') 该方法接受一个键名作为参数,返回键名对应的值。

③ xxxxxStorage.removeItem('key') 该方法接受一个键名作为参数,并把该键名从存储中删除。

④ xxxxxStorage.clear() 该方法会清空存储中的所有数据。

(4) 备注:

① SessionStorage存储的内容会随着浏览器窗口关闭而消失。

② LocalStorage存储的内容,需要手动清除才会消失。

③ xxxxxStorage.getItem(xxx)如果xxx对应的value获取不到,那么getItem的返回值是null。

④ JSON.parse(null)的结果依然是null。

二、组件的自定义事件

(1) 一种组件间通信的方式,适用于:子组件 ===> 父组件

(2) 使用场景:A是父组件,B是子组件,B想给A传数据,那么就要在A中给B绑定自定义事件(事件的回调在A中)。

(3) 绑定自定义事件:

① 第一种方式,在父组件中:<Demo @atguigu="test"/>或<Demo

v-on:atguigu="test"/>

② 第二种方式,在父组件中:

<Demo ref="demo"/>

......

mounted(){

this.$refs.xxx.$on('atguigu',this.test)

}

③ 若想让自定义事件只能触发一次,可以使用once修饰符,或$once方法。

mounted() {
  //绑定自定义事件
  this.$refs.student.$on('atguigu',this.getStudentName)
  //绑定自定义事件(一次性)
  // this.$refs.student.$once('atguigu',this.getStudentName)
},

(4) 触发自定义事件:this.$emit('atguigu',数据)

(5) 解绑自定义事件:this.$off('atguigu')

(6) 组件上也可以绑定原生DOM事件,需要使用native修饰符。

<Student ref="student" @click.native="show"/>

(7) 注意:通过this.$refs.xxx.$on('atguigu',回调)绑定自定义事件时,回调要么配置在methods中,要么用箭头函数,否则this指向会出问题!

三、全局事件总线(GlobalEventBus)

(1) 一种组件间通信的方式,适用于任意组件间通信。

(2) 安装全局事件总线:$bus就是当前应用的vm

new Vue({
render: h => h(App),
beforeCreate(){
  Vue.prototype.$bus = this //开启全局事件总线
}
}).$mount('#app')

(3) 使用事件总线:

① 接收数据:A组件想接收数据,则在A组件中给$bus绑定自定义事件,事件的回调留在A组件自身。

App.vue绑定自定义事件

mounted(){
  this.$refs.myfooter.$on('changeAll',this.changeAll)
  console.log("=========================");
  this.$bus.$on('checkTodo',this.checkTodo)
  this.$bus.$on('deltodo',this.deltodo)
},

② 提供数据:this.$bus.$emit('xxxx',数据)

Item.vue调用事件

methods: {
  handleCheck(id){
    // this.checkTodo(id)
    this.$bus.$emit('checkTodo',id)
  },
  del(id){
    // this.deltodo(id)
    this.$bus.$emit('deltodo',id)
  }
},

(4) 在beforeDestroy钩子中,用$off去解绑当前组件所用到的事件。

四、消息订阅与发布(pubsub)

(1) 一种组件间通信的方式,适用于任意组件间通信。

(2) 使用步骤:

① 安装pubsub:npm i pubsub-js

② 引入: import pubsub from 'pubsub-js'

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

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

(3) 提供数据:pubsub.publish('xxx',数据)

methods: {
  del(id){
  	pubsub.publish('deltodo',id)
  }
},

(4) 最好在beforeDestroy钩子中,用PubSub.unsubscribe(pid)去取消订阅。

五、nextTick

(1) 语法:this.$nextTick(回调函数)

(2) 作用:在下一次 DOM 更新结束后执行其指定的回调。

(3) 什么时候用:当改变数据后,要基于更新后的新DOM进行某些操作时,要在nextTick所指定的回调函数中执行。

//编辑
handleEdit(todo){
  if(todo.hasOwnProperty('isEdit')){
  	todo.isEdit = true
  }else{
    // console.log('@')
    this.$set(todo,'isEdit',true)
  }
  this.$nextTick(function(){
    this.$refs.inputTitle.focus()
  })
},

回复vue,可以获得全套笔记

1天让你精通vue(7 ref、prop、mixin)

1天让你精通vue(6 生命周期与组件)

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码