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

vue项目中beforeDestroy或destroyed使用this.$notify.closeAll()失效

需求是进入系统,在首页右下角弹出提示框,使用到element的this.$notify功能,但是发现存在几个问题,

第一个是this.$notify优先级太高,如果设置了不主动关闭,即使跳转到其它页面也不会关闭;

第二个是由于created时需要调接口查看是否需要展示notify,实际发现只要页面刷新一次就会出现一个notify,上一个不会关闭;

第三个是发现使用this.$notify.close()关闭不了notify。
在这里插入图片描述

解决方法:
第二个问题好解决,只要在调完接口,发现需要展示notify时,先关闭原先的notify再执行新的this. n o t i f y 即可:在 t h i s . notify即可:在this. notify即可:在this.notify前面先使用this.$notify.close();

但是this. n o t i f y . c l o s e ( ) 不生效啊,原来是因为 t h i s . notify.close()不生效啊,原来是因为this. notify.close()不生效啊,原来是因为this.notify.close()方法用于关闭单个通知,它需要传入一个参数,即要关闭的通知的id。这里我没有id,所以解决第三个问题,将this. n o t i f y . c l o s e ( ) 改为 t h i s . notify.close()改为this. notify.close()改为this.notify.closeAll()就有效果了;

然后是第一个问题,希望离开首页的时候,notify关掉,本来是准备在beforeDestroy或者destroyed里面写this. n o t i f y . c l o s e A l l ( ) ;打印发现离开页面根本没调用 b e f o r e D e s t r o y 或者 d e s t r o y e d ;研究页面发现原来是页面使用了 k e e p − a l i v e ;被 k e e p − a l i v e 包裹的组件会缓存组件实例,而不是销毁他们,但是这个页面又必须使用 k e e p − a l i v e ,那我们只能去看生命周期里的其他方法,于是就找到了 a c t i v a t e d , d e a c t i v a t e d ;离开组件时会执行 d e a c t i v a t e d ;所以我们在 d e a c t i v a t e d 里写 t h i s . notify.closeAll();打印发现离开页面根本没调用beforeDestroy或者destroyed;研究页面发现原来是页面使用了keep-alive;被keep-alive包裹的组件会缓存组件实例,而不是销毁他们,但是这个页面又必须使用keep-alive,那我们只能去看生命周期里的其他方法,于是就找到了activated,deactivated;离开组件时会执行deactivated;所以我们在deactivated里写this. notify.closeAll();打印发现离开页面根本没调用beforeDestroy或者destroyed;研究页面发现原来是页面使用了keepalive;被keepalive包裹的组件会缓存组件实例,而不是销毁他们,但是这个页面又必须使用keepalive,那我们只能去看生命周期里的其他方法,于是就找到了activateddeactivated;离开组件时会执行deactivated;所以我们在deactivated里写this.notify.closeAll()就好了。

全部代码:

  created() {this.warningCheck()},deactivated() {this.$notify.closeAll()},methods: {async warningCheck() {const res = await this.$api.接口名()if (res) {this.$notify.closeAll()this.$notify({title: '库存预警',position: 'bottom-right',duration: 0,dangerouslyUseHTMLString: true,message: `<p>当前库存低于预警数量,请及时处理</p><div style="display:flex;justify-content: flex-end;"><div style="width:40px;text-align:center;background:#7297e7;color:#ffffff;border-radius:4px;">处理</div></div>`,onClick: function () {this.$notify.closeAll()this.$module.push({name: 'stockWarning' // 要去的菜单})}})}}}
http://www.lqws.cn/news/117307.html

相关文章:

  • 华为云Flexus+DeepSeek征文|华为云Flexus服务器dify平台通过自然语言转sql并执行实现电商数据分析
  • 洛谷 单源最短路径 Dijkstra算法+优先队列
  • Flask框架详解:轻量高效的Python Web开发利器
  • 固定ip和非固定ip的区别是什么?如何固定ip地址
  • 搭建强化推荐的决策服务架构
  • OSPF域间路由
  • 企业的业务活动和管理活动是什么?-中小企实战运营和营销工作室博客
  • react+taro 开发第五个小程序,解决拼音的学习
  • 链路状态路由协议-OSPF
  • SpringAI集成DeepSeek实战
  • 近几年字节飞书测开部分面试题整理
  • 二极管MOS管选型
  • 【AI学习笔记】Coze工作流写入飞书多维表格(即:多维表格飞书官方插件使用教程)
  • Spring AI Tool Calling
  • Spring 中注入 Bean 有几种方式?
  • 通用寄存器的 “不通用“ 陷阱:AX/CX/DX 的寻址禁区与突围之道
  • 质检 LIMS 系统数据防护指南 三级等保认证与金融级加密方案设计
  • 设计模式-迪米特法则
  • 【Linux】自动化构建-Make/Makefile
  • DeepSeek 赋能金融衍生品:定价与风险管理的智能革命
  • 知识拓展卡————————关于Access、Trunk、Hybrid端口
  • 【C++】string类的模拟实现(详解)
  • Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot
  • Vim查看文件十六进制方法
  • 玄机-第六章 流量特征分析-蚂蚁爱上树
  • 在WPS中如何启用宏VBA wps.vba.exe下载和安装
  • MySQL 索引底层原理剖析:B+ 树结构、索引创建维护与性能优化策略全解读
  • 【OSG学习笔记】Day 15: 路径动画与相机漫游
  • 东西方艺术的对话:彰显中国传统艺术之美与价值
  • Java对象创建过程