Element 通知组件 Notification 支持同类型的提示信息只弹出一次!!!

简介: Element 使用闭坑指南• ElementUI 为 DatePicker 日期选择器组件添加前缀说明文字• 生成以周统计的表头,跨月份的周算在后一个月• Element Table 可以实现哪些常见的有用的功能• Element UI Loading 加载组件动态变更 text 值(加载文案)

Element 使用闭坑指南


当我们在使用 Element Notification 通知组件的时候,由于该组件不是通过实例化来创建的,当有事件触发通知时我们就无法控制在同一个页面相同的消息只弹出一次,我们必须使用其它的手段来实现。能否通过一个标识来记录当前页面已经触发通知,我们根据这个标识来判断是否再次弹出相同的提示信息。

2YJD%7N[3@WYCU~2@}D8~47.png


首先我们通过插件的方法,对 Notification 组件做个简单的封装,将判断逻辑整合进去。

import { Notification } from 'element-ui'
const $notify = options => {
  return Notification({
    ...options,
    duration: 0
  })
}
['success', 'warning', 'info', 'error'].forEach(type => {
  $notify[type] = options => {
    if (typeof options === 'string') {
      options = {
        message: options,
        type: type,
        title: '提示',
        duration: 0
      }
    } else {
      options = Object.assign({
        title: '提示',
        type: type,
        duration: 0
      }, options)
    }
    return Notification(options)
  }
})
Notification.install = function (Vue) {
  Vue.prototype.$notify = $notify
  Vue.prototype.$notify.close = Notification.close
}
export default Notification


封装好的插件我们使用在 main 里面导入并使用

import Notify from '@/plugins/notify'
// ...
Vue.use(Notify)


调用 this.notify() 参数可以直接是提示内容的字符串,也可以是配置对象

我们在 util 里封装三个工具函数,来分别从浏览器本地 Storage 缓存处理和判断事件标识

export function setNotifyFlag(eventKey) {
  return Vue.ls.set(eventKey, true, 60 * 60 * 1000)
}
export function removeNotifyFlag(eventKey) {
  return Vue.ls.set(eventKey, false)
}
export function checkNotifyFlag(eventKey) {
  return Vue.ls.get(eventKey)
}


然后在 Notification 事件回调方法里来增加判断,当本地缓存中相关通知事件的标识为空或者为 false 时,触发该通知的时候就调用 setNotifyFlag来在本地缓存中插入标识。在人为关闭通知的时候来移除标识。

if (options.eventKey) {
  options.onClose = () => {
    removeNotifyFlag(options.eventKey)
  }
  if (!checkNotifyFlag(options.eventKey)) {
    setNotifyFlag(options.eventKey)
    return Notification(options)
  }
  return false
} else {
  return Notification(options)
}


这个方案也有个弊端,当用户离开页面,没有手动去关闭通知的话,就无法将缓存中的对应事件的值重置为 false,下次再进来就无法触发这个通知了。所以我们根据情况去设置这个缓存时间。或者下次想到什么更好的方案,再来更新此篇。


目录
相关文章
Element的el-table行列错位对不齐问题处理
本文目录 1. 问题表现 2. 问题发现 3. 问题处理 4. 另一种处理方案
5389 0
Element的el-table行列错位对不齐问题处理
Vue3通知提醒(Notification)
这是一个基于 Vue2 的通知提醒框组件,支持高度自定义设置,包括消息标题、自动关闭延时、弹出位置等。提供了五种样式:默认、信息、成功、警告和错误,并可通过不同方法调用以实现相应样式。组件还支持多种位置设置,如顶部左侧、顶部右侧、底部左侧和底部右侧,并允许调整与屏幕边缘的距离。
752 3
Vue3通知提醒(Notification)
|
前端开发
如何在前端项目中单独引入 ElementUI 图标以及使用
这篇文章介绍了如何在前端项目中单独引入Element UI的图标文件以及如何使用这些图标。
1484 0
如何在前端项目中单独引入 ElementUI 图标以及使用
|
JavaScript
elementUI/Plus 输入框按回车刷新页面分析与解决
elementUI/Plus 输入框按回车刷新页面分析与解决
elementUI/Plus 输入框按回车刷新页面分析与解决
【亲测有效】Element UI 自定义 Notification 通知样式不生效,设置this.$notify样式不生效问题
【亲测有效】Element UI 自定义 Notification 通知样式不生效,设置this.$notify样式不生效问题
760 0
|
SQL XML JavaScript
【若依Java】15分钟玩转若依二次开发,新手小白半小时实现前后端分离项目,springboot+vue3+Element Plus+vite实现Java项目和管理后台网站功能
摘要: 本文档详细介绍了如何使用若依框架快速搭建一个基于SpringBoot和Vue3的前后端分离的Java管理后台。教程涵盖了技术点、准备工作、启动项目、自动生成代码、数据库配置、菜单管理、代码下载和导入、自定义主题样式、代码生成、启动Vue3项目、修改代码、以及对代码进行自定义和扩展,例如单表和主子表的代码生成、树形表的实现、商品列表和分类列表的改造等。整个过程详细地指导了如何从下载项目到配置数据库,再到生成Java和Vue3代码,最后实现前后端的运行和功能定制。此外,还提供了关于软件安装、环境变量配置和代码自动生成的注意事项。
28550 73
|
存储 JavaScript 容器
Element UI表格拖拽(vue中) —— 行拖拽、列拖拽
Element UI表格拖拽(vue中) —— 行拖拽、列拖拽
2607 0
|
关系型数据库 MySQL
解决MySQL8.0本地计算机上的MySQL服务启动后停止没有报告任何错误
解决MySQL8.0本地计算机上的MySQL服务启动后停止没有报告任何错误
13825 1
|
前端开发 JavaScript
使用 JavaScript 获取 URL 参数的详细指南
【2月更文挑战第26天】
14772 2
使用 JavaScript 获取 URL 参数的详细指南