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万,是否接收?')
相关推荐
Json_181790144806 分钟前
电商拍立淘按图搜索API接口系列,文档说明参考
前端·数据库
风尚云网29 分钟前
风尚云网前端学习:一个简易前端新手友好的HTML5页面布局与样式设计
前端·css·学习·html·html5·风尚云网
木子020432 分钟前
前端VUE项目启动方式
前端·javascript·vue.js
GISer_Jing34 分钟前
React核心功能详解(一)
前端·react.js·前端框架
捂月37 分钟前
Spring Boot 深度解析:快速构建高效、现代化的 Web 应用程序
前端·spring boot·后端
深度混淆44 分钟前
实用功能,觊觎(Edge)浏览器的内置截(长)图功能
前端·edge
Smartdaili China1 小时前
如何在 Microsoft Edge 中设置代理: 快速而简单的方法
前端·爬虫·安全·microsoft·edge·社交·动态住宅代理
秦老师Q1 小时前
「Chromeg谷歌浏览器/Edge浏览器」篡改猴Tempermongkey插件的安装与使用
前端·chrome·edge
滴水可藏海1 小时前
Chrome离线安装包下载
前端·chrome
endingCode1 小时前
45.坑王驾到第九期:Mac安装typescript后tsc命令无效的问题
javascript·macos·typescript