基于Element UI或Element Plus实现具有倒计时的Message消息提示

这篇具有很好参考价值的文章主要介绍了基于Element UI或Element Plus实现具有倒计时的Message消息提示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

刚好遇到一个需要自动关闭消息提示的需求,可Element框架暂时没有实现这个功能。开始时没有头绪,于是搜一下道友的博客文章,看到有一篇文章实现了这个功能,在此我完善了一下这个技巧方法。完善后的技巧方法支持多次点击,实例化多个消息提示,每个消息提示都具有自己的倒计时。以及可在Element UI或Element Plus框架上实现。

一、首先新建文件

/src/utils/elementUtil.ts

二、在Element UI框架上的实现

import { Message } from 'element-ui'

let timer = null

/**
 * 倒计时 Message 方法
 */
function coutdownTime(msgObj, message, number) {
  timer = setTimeout(() => {
    if (number > -1) {
      msgObj.message = `${message} ${number}s 后将自动关闭`,
      --number
      coutdownTime(msgObj, message, number)
    } else {
      msgObj.close()
      timer = null
    }
  }, 1000)
}

/**
 * 自动关闭 Message 方法
 */
function handleAutoCloseMessage(message, type, number, showClose) {
  const msgObj = Message(
    {
      message: `${message} ${number}s 后将自动关闭`,
      type: type,
      duration: 0,
      showClose: showClose,
    }
  )
  number--
  coutdownTime(msgObj, message, number)
}

Vue.prototype.$handleAutoCloseMessage = handleAutoCloseMessage

三、在Element Plus框架上的实现

import { ElMessage } from 'element-plus'

// 自动关闭定时器
let timer = null

/**
 * 倒计时 Message 方法
 */
 const coutdownTime = (msgObj: any, className: string,  message: string, number: number) => {
  timer = setTimeout(() => {
    if (number > -1) {
      msgObj.message = `${message} ${number}s 后将自动关闭` // element-ui 可起效,element-plus 不起效

      const parentDom = document.getElementsByClassName(className)[0]
      const childDom = parentDom.querySelectorAll('p')[0]
      childDom.innerHTML = `${message} ${number}s 后将自动关闭`
      
      --number
      coutdownTime(msgObj, className, message, number)
    } else {
      msgObj.close()
      timer = null
    }
  }, 1000)
}

/**
 * 自动关闭 Message 方法
 */
function handleAutoCloseMessage(message: string, type: any, number: number, showClose: boolean) {
  const randomNum = Math.floor(Math.random() * 10000)
  const className = `el-msg__${randomNum}`

  const msgObj = ElMessage(
    {
      message: `${message} ${number}s 后将自动关闭`,
      type: type,
      duration: 0,
      showClose: showClose,
      customClass: className,
    }
  )
  number--
  coutdownTime(msgObj, className, message, number)
}

export {
  handleAutoCloseMessage,
  // ...
}

四、使用方式

(1)若是Element UI框架的项目中,直接在任意一个 vue 页面中使用

this.$handleAutoCloseMessage('哈哈哈哈哈哈', 'error', 10, true)

(2)若是Element Plus框架的项目中,先在 main.ts 中引入 elementUtil 工具并配置为全局方法,然后直接在任意一个 vue 页面中使用

import * as elementUtil from '@/utils/elementUtil'
app.config.globalProperties.$elementUtil = elementUtil
this.$elementUtil.handleAutoCloseMessage('HelloWorld ~!', 'success', 5, true)

五、参考资料

https://blog.csdn.net/qq_43490372/article/details/112918190

六、效果如下 ~

element倒计时,vue.js,前端文章来源地址https://www.toymoban.com/news/detail-724767.html

到了这里,关于基于Element UI或Element Plus实现具有倒计时的Message消息提示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flutter实现倒计时功能,秒数转时分秒,然后倒计时

    Flutter实现倒计时功能 发布时间:2023/05/12 本文实例为大家分享了Flutter实现倒计时功能的具体代码,供大家参考,具体内容如下 有一个需求,需要在页面进行显示倒计时,倒计时结束后,做相应的逻辑处理。 实现思路:在Flutter中,Timer.periodic提供了循环功能,查看函数定义:

    2024年02月13日
    浏览(38)
  • jquery 实现倒计时

    $(\\\".tableText\\\").click(function () {     var time = 60;     var timer = setInterval(function(){         time--;         $(\\\".tableText\\\").text(\\\"(\\\"+time+\\\"秒)重发\\\");         if(time==0){             clearInterval(timer);             $(\\\".tableText\\\").text(\\\"获取验证码\\\");         }     },1000); });

    2024年04月14日
    浏览(37)
  • 51单片机通过计时器实现倒计时

    软件 : Keil5+Proteus7 元件 : AT89C51 * 1,7SEG-MPX2-CA * 1

    2024年02月16日
    浏览(49)
  • java 倒计时实现的方式

      倒计时的实现方法有很多种,本文给大家介绍其中一种,最简单的一种实现方式,也是最方便的一种方式,希望能帮到大家。 1、 java中倒计时是利用循环来实现的,我们可以使用循环语句来实现。 2、 java中使用 bool类的 setTimeout方法也是可以实现倒计时的。 3、 java中还有一

    2024年02月09日
    浏览(36)
  • jquery 实现倒计时60秒

    2024年02月04日
    浏览(33)
  • FPGA 课程综合实验——倒计时(简易计时器闹钟)基于STEP MAX10 FPGA

    组合使用STEP MAX10 FPGA核心板和STEP BaseBoard扩展底板,编写程序,完成一个倒计时定时 器的设计。 功能要求: 使用扩展底板上相邻的4位数码管显示计时时间,显示数值单位为“秒”。(2分) 定时器最大定时时间为99秒,时间显示分辨力为1/100秒。(2分) 倒计时结束时,扩展

    2024年02月03日
    浏览(32)
  • 基于51单片机的倒计时秒表proteus仿真设计

    目录 一、设计背景 二、实现功能 三、仿真演示 四、源程序         近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。本文阐述了基于单片机的数字电子秒表倒计时设计,倒计时精度达0.05s了,解决了传统的由于倒计时精度不够造成的误差和不公平性,是各种

    2024年02月02日
    浏览(38)
  • 基于FPGA的交通灯设计(加强版,涵盖倒计时)

    ##一、实验任务要求   1)实现一交通十字路口处红绿灯的基本定时控制功能,要求东西方向灯色循环为绿灯45秒,黄灯5秒,左拐灯15秒,黄灯5秒,红灯40秒,黄灯5秒;南北方向灯色循环为红灯65秒,黄灯5秒,绿灯20秒,黄灯5秒,左拐灯15秒,黄灯5秒。 2)实现东西方向和南北方

    2024年02月04日
    浏览(30)
  • 基于FPGA的倒计时交通信号灯系统(使用quartusII)

    好久没更新,转眼大二下了,去年我的城市经历新冠疫情,我自己也沉迷于某csgo游戏开摆500小时,终于在上个月醒悟,正式开始fpga的学习,是跟这实验室的一位带工程师学习的,话不多说开始。 主要看着B站开源骚客和小梅哥的视频,开源骚客的视频我看完了,最近在看小梅

    2024年02月11日
    浏览(30)
  • Unity实现倒计时和获取系统时间

      一:创建UGUI 1.创建Canvas画布组件,调节Canvas画布的分辨率等其他设置。我们可以把视图设置为2D模式下。   2.创建Text文本组件,取名为Timer计时器,我们调整Text文本组件的大小,用锚点设置Text文本组件的位置,并且设置好Text文本组件的颜色。   3.我们再创建一个Text文本组

    2024年02月10日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包