Notification 分不同实例关闭

vue3使用 element-plus中的Notification 实现一个 消息通知的功能。需求:,每当 socket 通知到位,系统右下角就会自动弹出一个 notification 弹框通知。 对应弹框点击后,做对应推送数据的处理且关闭 具体某个 消息通知。(多个消息通知,到底如何处理呢!)

typescript 复制代码
// socket 接受消息后处理回调
wsWrn.addCb('C_WRN', (data: ISocketMsg) => {
    const messageObj = data.data
    if (data.type === 'warning') {
      const notifyItem: any = ElNotification({
        dangerouslyUseHTMLString: true,
        icon: 'WarningFilled',  // 图标可 自定义, 也可自带组件库icon
        message: `内容`,
        position: 'bottom-right',
        duration: 60000,
        customClass: 'notifyStyleYj', // 给定特定class  修改弹框通知样式
        onClick: async () => {
          // 点击该通知回调 
        },
        onClose: () => {
        // 关闭后 需删除对应Notification实例
          delete earlyWarningMsgStore.notifyMap[messageObj.id]
        },
      })

      if (messageObj.id) {
      // 这里的操作是 接到消息通知后,存储到缓存中 使用messageId作为弹窗的key,用来获取弹窗的实例,以对对应弹窗进行操作。
        earlyWarningMsgStore.notifyMap[messageObj.id] = notifyItem
      }
    }
  })
  // 注意:  每条数据id 是 每个不同的Notification实例。  等外部 或者其它操作处理完该 socket 通知,一定要记得关闭该实例通知.close()方法   及删除该存储实例。

还有个关键性问题就是 根据需求,点击某个通知后需el-dialog 弹框中处理内容。此时消息弹框 层级比 el-dialog 高,这样就造成了无限点击 出现多个弹框问题。

css 复制代码
.notifyStyleYj {
  // 组件库弹框最小z-index为2000 为显示在dialog下层级设置
  z-index: 1999 !important;
  }

问题解决,就到此结束啦!

相关推荐
毕业设计7031 小时前
(免费领源码) 基于微信小程序的预制菜商城的设计与实现25172-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·python·mysql·微信小程序·pycharm·微信开发者工具·推荐算法
xifangge20252 小时前
AGENTS.md 怎么写?涵盖 Java、Python、Vue、Go 的 8 套开箱即用模板
java·vue.js·python
几何心凉2 小时前
没有万能模型:我用 AiiOnly Token Plan,把多款大模型的长处拼进同一个项目
前端
kyriewen2 小时前
Claude Code 的额度今天缩水了17%——官方公告上写的是"永久提高25%"
前端·ai编程·claude
雪芽蓝域zzs2 小时前
vue解构平铺VS对象包裹
前端·javascript·vue.js
风骏时光牛马3 小时前
从零到实战,完整AI学习路线
前端
三十而立洋4 小时前
深入理解 Monorepo:子包安装依赖
前端·前端工程化
IT_陈寒4 小时前
Java Stream处理大集合,我的内存怎么就炸了
前端·人工智能·后端
Captaincc4 小时前
AI 用量桌面端-桌面宠物自定义指南
前端·人工智能
OpenTiny社区5 小时前
码力全开,智启前端新生态|OpenTiny 登陆华为全联接大会2026
前端·github