electron-vite封装UI级的消息提示

说明

Electron + Vite + Vue3 + Element Plus
Electron中写提示有两种方案:

  • 系统级:electron带的dialog相关API
  • UI级:UI框架内部的提示,如ElMessageElMessageBoxElNotification

今天来封装一下UI级别的提示

代码

效果图
源码

代码封装在hooks中,借鉴了若依:

javascript 复制代码
// src/hooks/useMessage.js
import { ElMessage, ElMessageBox, ElNotification, ElLoading } from 'element-plus'

let loadingInstance;

export const useMessage = () => {
  return {
    // 消息提示
    info(content) {
      ElMessage.info(content)
    },
    // 错误消息
    error(content) {
      ElMessage.error(content)
    },
    // 成功消息
    success(content) {
      ElMessage.success(content)
    },
    // 警告消息
    warning(content) {
      ElMessage.warning(content)
    },
    // 弹出提示
    alert(content) {
      ElMessageBox.alert(content, '系统提示')
    },
    // 错误提示
    alertError(content) {
      ElMessageBox.alert(content, '系统提示', { type: 'error' })
    },
    // 成功提示
    alertSuccess(content) {
      ElMessageBox.alert(content, '系统提示', { type: 'success' })
    },
    // 警告提示
    alertWarning(content) {
      ElMessageBox.alert(content, '系统提示', { type: 'warning' })
    },
    // 通知提示
    notify(content) {
      ElNotification.info(content)
    },
    // 错误通知
    notifyError(content) {
      ElNotification.error(content)
    },
    // 成功通知
    notifySuccess(content) {
      ElNotification.success(content)
    },
    // 警告通知
    notifyWarning(content) {
      ElNotification.warning(content)
    },
    // 确认窗体
    confirm(content, tip) {
      return ElMessageBox.confirm(content, tip ? tip : '系统提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      })
    },
    // 删除窗体
    delConfirm(content, tip) {
      return ElMessageBox.confirm(
        content ? content : '是否删除所选中数据?',
        tip ? tip : '系统提示',
        {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }
      )
    },
    // 提交内容
    prompt(content, tip) {
      return ElMessageBox.prompt(content, tip, {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      })
    },

    // 打开遮罩层
    loading(content) {
      loadingInstance = ElLoading.service({
        lock: true,
        text: content,
        background: "rgba(0, 0, 0, 0.7)",
      })
    },

    // 关闭遮罩层
    closeLoading() {
      loadingInstance.close();
    }
  }
}
用法

vue组件中直接引用:

javascript 复制代码
import { useMessage } from "@/hooks/useMessage";
const message = useMessage()
message.confirm('马云想你转账500万,是否接收?')
相关推荐
GDAL3 分钟前
better-sqlite3之exec方法
javascript·sqlite
匹马夕阳44 分钟前
基于Canvas和和原生JS实现俄罗斯方块小游戏
javascript·canva可画
m0_6161884944 分钟前
Vue3 中 Computed 用法
前端·javascript·vue.js
六个点1 小时前
图片懒加载与预加载的实现
前端·javascript·面试
weixin_460783871 小时前
Flutter解决TabBar顶部页面切换导致页面重载问题
android·javascript·flutter
Patrick_Wilson1 小时前
🔥【全网首篇】30分钟带你从0到1搭建基于Lynx的跨端开发环境
前端·react.js·前端框架
逍遥客.1 小时前
uniapp对接打印机和电子秤
javascript·vue.js·uni-app
小沙盒1 小时前
godot在_process()函数实现非阻塞延时触发逻辑
javascript·游戏引擎·godot
Moment1 小时前
前端 社招 面筋分享:前端两年都问些啥 ❓️❓️❓️
前端·javascript·面试
Moment1 小时前
一坤时学习 TS 中的装饰器,让你写 NestJS 不再手软 😏😏😏
前端·javascript·面试