当前位置: 首页 > news >正文

多个织梦dedecms网站怎么做站群网站上图片不能下载 该怎么做

多个织梦dedecms网站怎么做站群,网站上图片不能下载 该怎么做,学什么可以做网站,专业高端网站建设服务公司问题#xff1a;vue中eventbus被多次触发#xff0c;在this.$on监听事件时#xff0c;内部的this发生改变导致#xff0c;无法在vue实例中添加数据。 项目场景 一开始的需求是这样的#xff0c;为了实现两个组件(A.vue ,B.vue)之间的数据传递。 页面A#xff0c;点击页面… 问题vue中eventbus被多次触发在this.$on监听事件时内部的this发生改变导致无法在vue实例中添加数据。 项目场景 一开始的需求是这样的为了实现两个组件(A.vue ,B.vue)之间的数据传递。 页面A点击页面上的某个A上的某一个按钮之后页面会跳转到页面B。这个时候需要将页面A上的数据携带过去给页面B。 // 发送数据的组件 templatedivbutton clickincrementemit/button/div /templatescript export default {name: Achild,methods: {increment() {this.bus.$emit(increment, 我是increment)}}, /script templatedivI am BChildp{{info}}/p/div /template // 接受数据的组件 script export default {name: Bchild,data() {return {info: default info}},// 放在crerated()生命周期且使用箭头函数才能将数据挂载到接受数据组件的this上created() {let _this thisconsole.log(Bchild this, this)this.bus.$on(increment, data {this.info data})}, /script按照理论我觉得只要在页面A触发了increment事件页面B就会理所当然的接受了数据。然而结果却不如人意。 从这里可以发现 页面B根本就没有接收到这个事件 然后再从页面B回退到 页面A 再重复一遍emit increment事件。会神奇的发现B竟然收到了 A传递过来的数据。 你会发现第一次触发事件increment的时候B并没有收到。 第二次触发的时候就输出了一个。第三次触发的时候就又输出了两个依次增加。而且你还会发现打印出的on的回调函数打印出的this指向并不是指向当前vue实例(B.vue)。而且明明是顺序执行却偏偏是异步执行。on的回调函数先于 console.log(‘Bchild this’, this)执行。 问题1为什么第一次触发事件的时候页面B on没有监听到事件。问题2为什么后面再一次依次去触发的时候会出现每一次都会发现好像之前的on事件分发都没有被撤销一样导致每一次的事件触发执行越来越多。问题3为什么是on里的回调函数先执行 输出的指向且并不指向当前vue实例 解决 这些问题的出现还要从vue的生命周期讲起。大家可以自己去学习Vue生命周期的钩子。 从这里我们可以清楚的看到当我们还在页面A触发emit事件时页面B还没有生成也就是说页面B中created中所监听的来自于A中的事件还没有被触发。这个时候你A中emit事件的时候B还没有监听到。 再仔细看看当我们从A页面跳转到B页面中的时候发生了什么首先是B组件created 然后beforeMounted接着A组件才被销毁A组件才仔细beforeDestory以及destoryed。然后B组件再执行mounted。 所以我们可以把A页面组件中的emit事件放到beforeDestory里因为这个时候B组件的created钩子已经执行也就可以监听到从A传过来的事件了。而且从周期来看B的$on监听也不能放在mounted钩子里不然也会出现监听不到的情况。 templatedivI am AChildbutton clickincrementemit/button/div /templatescript export default {name: Achild,methods: {increment() {console.log(A触发了 $emit)this.$router.push(/B)}},beforeDestroy () {this.bus.$emit(increment, 我是increment)}} /script修改过后效果图 我们可以看到修改后B明显可以收到A传递过来的数据。但是多次点击事件的触发还是会依次增加控制台打印的输出每次都有增加。而且每次在$on里的回调函数会打印出以前监听到的vue实例和本次监听的实例。 总结 查找各方面资料才知道**$on事件是不会自动销毁的。需要我们手动来销毁。** 这是因为Bus是全局的并不随着页面的切换而重新执行生命周期所以$on能存储到以前的实例这样看起来才比较奇怪。如果没有A组件没有将emit放在beforeDestory钩子里通过全局的事件总线bus(没有受生命周期约束)而B里的 o n 里没有监听到最新的 e m i t 只会收到以前的事件所以 on里没有监听到最新的emit只会收到以前的事件所以 on里没有监听到最新的emit只会收到以前的事件所以on的this会指向上次B.vue的vue实例。导致现在的B.vue就算看起来拿到了数据也无法挂载到现在的B实例上。 所以在B组件添加 beforeDestroy () {this.bus.$off(increment) }建议 使用bus时一定要注意组件的生命周期。对于这种会被销毁的vue实例。一定要把emit放在beforeDestory里面。并且要记得将$on销毁。 如果是要保存这种状态最好使用vuex进行数据传递。这样这些传递的值就不会受组件的销毁新建的影响可以保存下来。
http://www.dnsts.com.cn/news/94678.html

相关文章:

  • 网站js跳转个人如何注册商标
  • 从优化角度来建设网站前端学什么
  • 西安医疗网站制作宝安中心做网站
  • 网站建设费入别人帮自己做网站有后门吗
  • 天津seo实战培训谷歌seo顾问
  • 福建省教师空间建设网站家具商务网站策划案
  • 株洲做网站没事网站建设项目规划书
  • 新手如何做自己的网站茂名网站建设建站系统
  • 宁波建设网站公司企业免费自助建站平台
  • 长沙找工作哪个网站好wordpress的导航菜单
  • 重庆网站建设模板制作app开发软件免费
  • 网站开发需要哪些技能网站建设中页面源码
  • 江苏住房与城乡建设厅网站万盛建设局官方网站
  • 硅胶东莞网站建设WordPress百科模板
  • 小程序有做门户网站企业综合管理系统
  • 网站设计三原则岳阳市交通建设投资公司门户网站
  • 网站建设和网站设计有什么区别手机app客户端
  • 线在科技成都网站推广公司优秀免费h5页面制作
  • 凡科互动下载网站建设与seo优化的公司
  • 制作网站公司推荐肇庆做网站设计
  • 新闻门户网站什么意思cn域名续费多少钱一年
  • 在百度做网站赚钱吗旅游网站的建设论文
  • 保定网站推广哪家好哪里有软件定制开发公司
  • 关于加强机关网站建设现在建设校园网站用什么软件
  • 国示范校建设网站厦门零基础学seo
  • 北京品牌网站建设公司哪家好爱发电怎么做网站
  • 申请邮箱怎么注册苏州做网站优化
  • 常州市城投建设工程招标有限公司网站河南省建设厅一体化平台
  • 高密建网站wordpress企业主题制作教程
  • 小程序设计网站WordPress表情问题