成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ElementUI 提示框單例控制:從 2.x 到 3.x 的完整解決方案

開發 前端
本文將深入探討 ElementUI 2.x 和 3.x 如何實現 單例提示框,并提供優秀實踐方案。

在前端開發中,ElementUI 的 Message(消息提示) 和 Notification(通知框) 是高頻使用的組件。但在某些場景下,我們不希望它們 同時彈出多個,比如:

  • 表單提交,防止重復提示
  • 全局錯誤攔截,避免堆疊報錯
  • 關鍵操作反饋,確保用戶不被干擾

本文將深入探討 ElementUI 2.x 和 3.x 如何實現 單例提示框,并提供 最佳實踐方案。

一、 ElementUI 2.x 的解決方案

2.x 版本對 Message 和 Notification 的支持不同,需分別處理。

1. Notification(支持 max 配置)

Notification 在 2.X 版本支持全局 max 配置,可限制最大顯示數量:

import Vue from 'vue';
import ElementUI from 'element-ui';

Vue.use(ElementUI, {
  notification: {
    max: 1,  // 同一時間只顯示一個
    offset: 20,  // 位置偏移
    duration: 3000  // 自動關閉時間
  }
});

優點:

  • 配置簡單,無需額外代碼
  • 自動關閉舊彈窗,確保唯一性

缺點:? 僅適用于 Notification,Message 不支持

2. Message(需手動封裝單例)

Message 在 2.x **不支持 max**,必須手動控制:

方案 1:全局封裝單例 Message

import { Message } from'element-ui';

let activeMessage = null;

exportfunction showSingleMessage(options) {
if (activeMessage) {
    activeMessage.close(); // 關閉舊消息
  }
  activeMessage = Message(options);

// 監聽關閉,防止內存泄漏
const originalOnClose = options.onClose || (() => {});
  options.onClose = () => {
    originalOnClose();
    activeMessage = null;
  };
}

// 使用
showSingleMessage({ message: '操作成功', type: 'success' });

方案 2:Vue 原型掛載(全局調用)

// main.js
import { Message } from'element-ui';

let currentMessage = null;

Vue.prototype.$singleMessage = (options) => {
if (currentMessage) currentMessage.close();
  currentMessage = Message({
    ...options,
    onClose: () => {
      currentMessage = null;
      options.onClose?.();
    }
  });
};

// 組件內調用
this.$singleMessage({ message: '僅顯示我', type: 'warning' });

適用場景:

  • 需要全局控制 Message 唯一性
  • 防止重復提交、錯誤堆疊

二、ElementUI 3.x(Element Plus)的優化

Element Plus(基于 Vue 3)對 Message 和 Notification 都支持 max 配置,使用更簡單。

1. 全局配置 max

import { createApp } from'vue';
import ElementPlus from'element-plus';

const app = createApp(App);

app.use(ElementPlus, {
// Message 配置
message: {
    max: 1,  // 限制僅顯示一個
  },
// Notification 配置
notification: {
    max: 1,
  },
});

優點:

  • 一行配置解決單例問題
  • 適用于 Message 和 Notification

2. 動態控制(高級用法)

如果某些場景需要 臨時關閉單例限制,可以動態調整:

import { ElMessage } from 'element-plus';

// 臨時允許多個 Message
ElMessage({ message: '提示 1', grouping: true }); // grouping 可堆疊
ElMessage({ message: '提示 2', grouping: true });

// 恢復單例模式
ElMessage({ message: '唯一提示', max: 1 });

三、最佳實踐總結

方案

ElementUI 2.X

Element Plus 3.X

Notification 單例

max: 1

(全局配置)

max: 1

(全局配置)

Message 單例

手動封裝單例

max: 1

(全局配置)

動態控制

需手動管理

支持 grouping 參數

推薦方案:

  • ElementUI 2.X:Notification 用 max,Message 手動封裝單例
  • Element Plus 3.X:直接全局配置 max: 1

四、常見問題

多個 Message 如何排隊顯示?

可以封裝 消息隊列,如:

const messageQueue = [];
let isShowing = false;

function showNextMessage() {
if (messageQueue.length === 0 || isShowing) return;
  isShowing = true;
const options = messageQueue.shift();
  Message({
    ...options,
    onClose: () => {
      isShowing = false;
      options.onClose?.();
      showNextMessage();
    }
  });
}

exportfunction queueMessage(options) {
  messageQueue.push(options);
  showNextMessage();
}
責任編輯:趙寧寧 來源: 前端歷險記
相關推薦

2017-10-24 15:11:39

Python 2.x 3.x

2011-04-27 09:39:53

EclipseIntelliJ

2015-09-14 10:18:37

2009-04-20 16:15:59

2014-11-28 09:47:26

Python

2012-06-17 20:19:29

2024-11-05 09:25:45

2009-10-24 23:24:46

ibmSystem x365虛擬化

2017-06-08 11:00:09

HDFSHadoopYARN

2011-08-16 10:41:40

安裝XcodeLion

2022-03-23 23:08:59

銳捷

2021-12-09 10:17:25

部署實戰Linux

2022-02-22 08:30:12

Husky代碼工作流

2024-07-01 08:18:14

2010-12-21 17:38:12

2009-10-24 23:20:49

System x365虛擬化

2022-03-18 09:00:00

開發Web服務應用程序

2021-03-04 10:11:50

MongoDBSpring BootSpring Boot

2012-06-27 15:59:13

Python

2013-09-16 10:31:46

IBM System X86System x
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产日韩精品在线 | 毛片一级网站 | 亚洲国产午夜 | 91极品视频 | 91麻豆精品国产91久久久久久 | 看毛片的网站 | 欧美视频一区二区三区 | 午夜视频一区二区 | 一区二区福利视频 | 久久精品69 | 久久久久久精 | 亚洲精品乱码久久久久久蜜桃91 | 国产成人精品综合 | 亚洲午夜在线 | 亚洲色视频 | 国产精品一区二区三区四区五区 | 国产线视频精品免费观看视频 | 日韩高清中文字幕 | 国产日韩久久久久69影院 | 九九久久国产精品 | 懂色中文一区二区三区在线视频 | 成人av电影在线观看 | 99热在线播放 | 欧美日韩一区二区三区不卡视频 | 一级毛片视频在线观看 | www.成人在线视频 | 久久88| 亚洲国产一区二区三区 | 国产做a爱片久久毛片 | 三级黄色片在线 | 亚洲视频在线一区 | 国产精品久久9 | 日韩欧美视频 | 国产成人精品免高潮在线观看 | 伦理午夜电影免费观看 | 精品视频一区二区三区 | 91在线精品视频 | 99精品欧美 | 99久久久久国产精品免费 | 亚洲国产精品久久久久秋霞不卡 | 日韩欧美不卡 |