城市直播房产教育博客汽车
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

vueVue脚手架消息订阅与发布

9月21日 凉夕夏投稿
  今天的内容有意思了,朋友们继续对我们之前的案例完善,是这样的我们之前是不是靠props来完成父给子,子给父之间传数据,其实父给子最好的方法就是props但是自给父就不是了,并且今天学下来,不仅如此,组件间任何层级的关系我都可以传数据了,兄弟之间,爷孙之间等等等等七。浏览器本地存储1。localStorage
  关闭浏览器数据不会丢失
  通过它上面的一个api可以存储数据。setitem()两个参数,前面是键,后面是值,要注意的是都要以加引号以字符串形式进行存储,而且就算你不加引号,最终呈现效果也会强制给你调用toString这个方法
  可以看到就算是字符串也变成了字符串类型,那么问题就来了,那如果我传入的是一个对象,也被强制调用了toString那我对象就没了,什么也看不到了
  所以如果是要存储对象数据的时候需要将对象用转为json数据在进行存储,我们都知道json本质上还是一个字符串
  剩下还有三个api:读取getitem()、删除removeitem()、清空clear()这个不用传数据
  注意:读取没有的属性,将会显示null2。sessionStorage
  浏览器一关就没有数据了
  他的api跟local一样3。TodoList案例完善
  我们刚才做的案例数据在一刷新,就会回到初始案例,显然这样是不行的,每个人都应该有属于自己的数据,就可以配合localstorage来,通过监视属性来做,监视我们的data数据,当一发生变动就让最新的值setitem到我们的本地存储
  我在这里卡了半天啊,我一直在纠结,为什么这个local里面的属性名会给我变成个数组,最终查到了,原来watch监视属性里面的参数本身就是个数组,放的对象的形式,做到这一步当我们敲击回车,已经可以看到localstorage将我们的数据存储下来了,但是呢我们的页面还没有,这个时候需要将我们原来的数据,注意datas本身是一个数组这里就不用再用数组包裹了
  这个时候我们我们刷新就能看到我们之前已经添加过的数据了
  bug:当我们把local清空准备重新试一下,就会报错
  不能够读取null的长度差不多是这个意思,哪里来的null?还记得前面说过当我们本地存储如果读取的是一个不存在的属性那他读取出来就是null,所以问题出现在这里,这个时候localstorage里面还没有这个属性的,主需要采用短路运算,让原始数据,存在就用它否则就为一个空数组
  bug:虽然完成了刷新添加的数据不会丢失,但是我们的选择刷新了会丢失,为什么,问题出现在watch这里,我们对watch的监视只是看dataArr有没有整体改动,用了unshift,vue都能检测到,很明显这是一个能够改变自身的方法,但是我们去勾选前面的选择,却是深层次里面的了,所以监视的deep属性就来,只有监测到深层次的改动才又会重新setitem八。自定义事件方法一:或者von方法完成一个案例,当我们点击一个子组件,会把子组件的名字传到app里面来并打印出来,用到props的子传父方法,怎么用自定义事件来完成这件事情,首先在app的组件标签写上我们的自定义事件名,用von来绑定,
  那么这个事件怎么来触发呢,这样来理解,当我们通过组件标签给她绑定了一个自定义事件,那么此时这个组件实例对象vc身上肯定已经有这个事件了,至于怎么来触发就需要回到我们的组件里面去定义
  这里先把我们的触发后的事件处理函数定义好,然后关键逻辑主要是在我们要触发的这个组件里面,想要这个自定义事件要怎么触发其实是听你自己的,同样还是需要在这边生命一个内置的事件,然后在这个事件函数里面用到一个apiemit,他的第一个参数就是你的自定义的事件的名字,第二个参数可以传参给你自定义事件的处理函数
  props和自定义事件异同点:
  共同:都可以实现子给父传数据,而且都是通过父组件里面的回调来实现的
  不同点:props需要接收,而这种方法,直接拿来用都不用调用这个函数,props还需要自己去调用这个函数把参数传进去方法二:针对于上面的自定义事件的形式,我们还有第二种方法也叫做ref法,通过在app给子组件添加一个ref,前面就说过我们用ref获取来的组件是这个组建的实例对象,有了实例对象,直接通过mounted这个生命周期钩子,为什么要在这里做,因为只有挂载完毕了我们才能拿到这个实例对象,vue才会new组件构造函数,继续通过on这个方法给这个实例对象在他身上添加一个自定义事件
  做到这一步,我们组件里面的代码不变,还是click同时还是通过emit这个api来触发自定义事件,做到这一步意思就是,一切准备就绪,一旦在这个组件触发了这个自定义事件就会执行自定义事件的回调函数,那么回到函数呢?直接在后面以参数的形式添加
  如果说我只想执行一次用von方法就是直接用事件修饰符,用ref方法,就调用once这个api
  注意如果是子组件多个参数传进来,可以使用这种方式将其以一个数组方式接受
  8。1解绑自定义事件解绑单个事件,写在子组件里面,全新apioff
  解绑多个,用字符串包裹
  解绑所有,this。off()不传参数回顾前面所说的一个生命周期的问题,说过当执行了destroy之后,身上的事件、监听器等都会被销毁,但是说的事件是自定义事件,和vue事件不包括原生js事件,比如你点击一个按钮n,这个时候n肯定不加了,但是如果你写的有console。log那么这个log肯定还是你点一次输出一次的,自定义事件就更不用说了,也是vue实现的,所以也会被销毁实现不了了,还有一个点就是,vm被销毁了他下面的子组件的这些自定义事件等也会被销毁8。2注意是一种组件间的通信方式,适用于子组件给父组件传我们的组件标签上也可以绑定内置事件,但是需要。native这个修饰符,绑定后比如一个click那就是这个子组件的最大的p可以触发也就是子组件的最外层如果用下面这钟方式绑定自定义事件的时候,需要注意回调这里要么写在mtehods里面,要么写成一个箭头函数,不然this指向会变
  8。3TodoList自定义事件
  将之前这个案例子传父数据的地方都改成自定义事件,我就直接传几个,比如敲回车放入数组这里直接将原来的动态绑定改为自定义事件,简写形式
  然后我们header这边的props就可以删除了,同时在我们的键盘事件添加上调用api去触发自定义事件的命令
  然后我们在用ref打标识的方法再做一次全选的方式,首先需要在app里面找到footer的子组件,给她打一个标识,然后在我们app这个组建的mounted函数里面来通过ref得到这个组件实例对象通过on这个api将自定义事件绑定上去,同时第二个参数为我们要调用这个事件的回调函数
  然后后面基本是一样的,在我们子组件里面这个自定义事件该怎么触发,就写内置事件,写一个事件处理函数,然后在这个处理函数里面,emit这个api来触发自定义事件,同时将我们需要的参数传过来
  九。全局事件总线9。1安装全局事件总线
  可实现任意组件间的通信
  其实原理是这样的,我们左边这么多组件,要实现任意互相通信,可以由一个中间者实现,比如我们在B里面定义这个x给她通过on绑定一个自定义事件,同时回调在我们B里面,注意是在B里面,所以当执行这个自定义事件的时候,是在B里面执行,完成了这一步,比如说我们要把A的数据传到B里面来,那么A就可以通过x这个对象用他身上的emit这个api来触发我们的自定义事件同时把A身上的数据,传过来,这个时候我们B的回调里面就能收到这个数据了。
  其实原理跟我们前面的自定义事件很像,所以这么一看,这个x是不是要满足两个特性:一个是它能够被所有组件访问到,一个是他身上要有on、emit等api,第一个问题它能够被所有组件访问到,放在VueComponent上实现不了,因为我们说过每个VueComponent都是一个全新的构造函数,放在自己vc上更不可能,那就只有你能访问了,那么顺着那条线,是不是答案已经出来了,没错,要让所有组件都访问得到,那就只有Vue的原型对象了
  第二个问题,怎么让他身上有这些api,这些api其实都是在vue原型对象上的,所以我们vm、vc都可访问得到,但是将它等于一个vc不太现实,因为我们是将它定义在入口文件的,那就只能为一个vm了,并且还要在vm的beforecreate这个生命周期函数来赋值,为什么要在生命周期函数里来赋值,因为这里讲究一个时间效应,太慢了不行的,前面也已经看过了ref打标识这种方法调用on这个api就是在mounted生命周期函数里面调用的,为什么因为讲mounted的时候就说过这里面是万物的开始,呱呱坠地的时候,什么定义定时器、自定义事件等等都是在这里,而且也只能在这里,不然时间晚了,我触发了你还没绑定好那怎么可以,所以说我们讲究一个时间效应,如果等到vm都定义完了,来一个xvm,这个时候已经整个都挂载到页面上去了,我们组件里面的mounted也早已经执行完了,你的x都还没有这些api那就会报错,然后还只能写在beforecreate这个生命周期钩子,为什么,也不是说只能嘛,最好写在这里,created感觉也是可以的,因为这里数据挂载这些都还没做,但是也说过vue内置的一些事件、api之类的定义完了,我要这些就够了,我不需要数据。
  所以最终定义成这样就是最标准的了,而且我们一般x叫做bus,因为这个东西的作用一是本身有点公交车的感觉,谁都能用,还有一个就是他的中文意思还有总线的意思
  有一点必须要清楚,我想把A发送到B,那调用emit发射这个api的就是前者并且参数是数据,而后者就调用on并且参数为回调,你就拿到这个数据了,想干嘛干嘛了
  然后就是,定义自定义事件也就是on肯定一挂载就要定义,所以写在mounted里面,而发送数据这边决定触发事件的方式
  既然用到了出生mounted,最好也在临别beforeDestroy解绑我们的事件,一定要写事件名
  9。2TODOList全局事件总线
  又可以继续完善之前的案例了,其实父给子传数据,props是最好的方法,子给父传,用我们原始方法也行(props),自定义事件也好,都差不多的,这里最需要用到全局事件总线的,是孙给爷传,之前一直靠着list这个中间量props,他自己也没用只是给item带过去函数
  定义好api
  我们是item给app传,那就在item先emit,都是传过去id进行更新我们的数据里面的completed是否勾选和筛选进行删除操作
  然后再mounted里面声明事件
  十。消息订阅与发布
  一种组件间的通信方式,适用于任意组件间通信
  如果A需要C的数据,那么A就订阅消息,C就发布消息即可
  原生JS无法轻松实现消息订阅与发布,需要第三方库(这里推荐pubsubjs)先安装这个库哪里需要就在那里导入,我要把student的学生姓名传给school那他们两个都需要
  ,导入时注意直接pubsub没有js
  学生这边发布信息,参数为要传过去的数据,用到的apipubsub。publish,第一个参数为消息名,发布与订阅都需要的
  学校这边订阅消息用到的是pubsub。subscribe接受两个参数,第一个是我们的消息名字,所以一般取名为msgName,第二个参数才是我们传过来的数据,一般取名data,注意消息订阅同自定义事件、全局事件接收数据这边都是放在mounted函数里面的
  注意一,同样需要在beforeDestory函数里面取消订阅,用到的api。unsubscribe,但是我们这里的消息订阅有点类似于定时器,需要一个变量去接收,这边取消订阅为这个变量名,注意不是消息名
  像这样是拿不到的,都是两个作用域了,把它放到实例对象上去,作为一个属性即可
  注意二:直接在订阅消息里面写这个函数同样要写为箭头函数,不然this会乱,或者也可以在methods里面写,这里直接调用
搜索 投诉 评论 转载

芯片取得重大突破,中国芯或将弯道超车我国芯片再次迎来重大突破,芯片行业将迎来大变革,外媒盛赞中国速度之快,这是怎么一回事呢?众所周知,传统芯片的核心设备,也就是光刻机制造技术,一直牢牢的掌握在荷兰手中,而阿……ASC科研发现一起来看僵尸病毒如何操纵毛毛虫自杀这听起来像是恐怖电影中的情节,但在昆虫世界中发生的频率比你想象的要多:病毒接管宿主并驱使它们走向死亡,这样病毒就可能更容易传播给其他受害者。科学家们认为,这实际上已经持续……如何将视频的语音变成文字播放出来?剪映软件APP,音频里有个字幕自动识别菜单,这个功能对视频里已经有的原声和后期视频录音都可以识别字母出来,制作视频字幕的时候要注意错字修改,普通话不标准或本身视频里的声音比较吵……互联网厨电领域领导企业,纯米科技完成1。1亿元D轮融资商道创投网5月9日官方获悉:纯米科技近日正式宣布完成1。1亿元D轮融资,投资方是由鼎晖百孚独家投资。用四品牌布局万亿厨电市场成立于2013年5月的纯米科技,以互联网厨电为……vueVue脚手架消息订阅与发布今天的内容有意思了,朋友们继续对我们之前的案例完善,是这样的我们之前是不是靠props来完成父给子,子给父之间传数据,其实父给子最好的方法就是props但是自给父就不是了,并且……续航超1000km,L4级智能驾驶,3。9秒破百,这些新能源前几年要说在国内这块庞大的汽车市场上什么车型最火,那毫无疑问当属SUV,说得好听点叫做群雄争霸,说得不好听就是群魔乱舞。不管是传统车企,还是造车新势力,无不推出各种类型的SUV……为什么感觉国内用高档办公本的人都不怎么用surface?自己在用,surface的产品我用的pro3,说真的,微软做产品那是非常垃圾。当年的zune就是例证之一!Surface的问题,音量太小,以前没感觉这是什么问题,但是你真……华为P50Pro丨抬手就拍的相机南山晚霞huaweiP50Pro第一次外拍体验!犹豫了好久决定买以主打影像为主的P50Pro,既然买了就不后悔,整体使用相当奈斯,以P系列主打的影像技术确实在游玩中……继续深耕赛事IP营销,TCL成英雄联盟职业联赛官方合作伙伴熟悉电竞圈的朋友应该都知道,如今的英雄联盟职业联赛已经成为全球顶级的电竞赛事。为了促进LPL联赛的持续健康发展,以LPL为中心衍生出的商业化模型也越来越庞大,更多国内外知名品牌……两千元最强性价比神机,RedmiNote10Pro有何魅力很多预算在两千元的小伙伴,购机直接选择红米,确实红米的性价比一直受消费者称赞,RedmiNote10Pro售价2099元,搭载天玑1100芯片,在同级产品中性能表现比较突出。……Spark(六)RDD的血缘依赖RDD依赖关系1。RDD血缘关系RDD只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列Lineage(血统)记录下来,以便恢复丢失的分区。RDD的Li……直击广交会除了松子阿富汗商人阿里还带来更多好物西班牙香皂、智利红酒、土耳其咖啡壶、韩国面膜、德国轴承进入第131届广交会线上进口展区,来自全球32个国家和地区的402家境外企业带来的好吃的、好玩儿的、好看的、好用的商品令人……
黄章依旧不死心!魅族两款ampampquot新梦想旗舰amp被断供两年后,华为不希望5G被夸大vivoS12系列代言人王嘉尔化身迷局挑战官,为你解读超S专QQ号被盗了,申诉一直不成功该怎么办?怎样寻找长线大牛股?魅族5600mAh新机试产,16512G下放3999,黄章想a11的仿生在iphone8上很多都不支持,它装在iphon前端开发小白从入门到进阶简要路径指南有人老吐槽中国邮政,其实却不知道,中国邮政才是yyds周工作超55小时增加死亡风险荣耀首款折叠屏手机9999元当电网邂逅数字孪生,天耀宏图构建全生命周期智慧运维管理40004999元手机性价比排名小米11Pro第三
我教奶奶用手机地方高师院校师范类大学生就业能力培养研究孕妇湿气重的表现有哪些你是个换男友如换衣服的女生吗语文教学总结青郊归牧排序求和如何统计前几名数据合计下篇离婚不要财产付抚养费可以不给吗?人民日报:郭美美是一只怎样有背景的妖怪?那一刻的爱作文300字人类处于第6次大灭绝时期?2022年会毁灭吗?盘点地球毁灭史祖国山河一片红邮票价格天价邮票拍出千万价格万都难

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁