当前位置: 首页 > article >正文

vue3 + Element Plus + ts 封装全局的 message、messageBox、notification 方法

本文示例将 Element Plus 中的 ElMessage 消息提示, ElMessageBox 消息弹出框, ElNotification 消息通知 方法统一封装到全局 hooks 文件中方便全局调用

准备在项目 src 目录中新建 hooks 目录、然后在 hooks 目录中新建 index.ts (如果你没有使用 ts 也可以建 index.js)文件(主要用于将全局的方法放到这个文件中),当然,你可以根据自己的习惯或喜好将示例代码放置到其他地方。

完整代码(ts 版)

// 用于封装一些全局的hook,可以单独导入某些方法使用,也可以统一导入 hook 对象,从 hook 对象中 . 具体的方法

import { ElMessage, ElMessageBox, ElNotification } from 'element-plus'

/**
 * 封装一个全局的 message 方法,用于显示消息提示
 * @param message 消息内容
 * @param type 消息类型,默认为 success
 * @param [options] 消息选项
 */
export const message = (
  message: string,
  type: 'success' | 'warning' | 'info' | 'error' = 'success',
  options: any = {}
) => {
  ElMessage({
    message,
    type,
    ...options
  })
}
/**
 * 封装一个全局的 confirm 方法,用于显示确认对话框
 * @param message 对话框内容
 * @param title 对话框标题,默认为 '提示'
 * @param [options] 对话框选项
 * @return Promise<boolean>
 */
export const confirm = (message: string, title: string = '提示', options: any = {}) => {
  if (Object.keys(options).length === 0) {
    options = {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning'
    }
  }
  return new Promise((resolve, reject) => {
    ElMessageBox.confirm(message, title, options)
      .then(() => {
        resolve(true)
      })
      .catch(() => {
        reject(false)
      })
  })
}
/**
 * 封装一个全局的 notification 方法,用于显示通知
 * @param message 通知内容
 * @param title 通知标题,默认为 '提示'
 * @param [options] 通知选项
 */
export const notification = (message: string, title: string = '提示', options: any = {}) => {
  ElNotification({
    title,
    message,
    ...options
  })
}

/**
 * 统一导出一个 hook 方法对象,包含所有 hook 方法
 */
export default {
  message,
  confirm,
  notification
}

注:这是完整代码,如果你的项目也是 vue3 + Element Plus + ts 那么你可以直接全部复制放到你创建的 .ts 文件中,然后在页面中导入使用它们。

使用示例

导入(注意核实你的文件路径)

import hooks from '@/hooks/index'

使用示例

hooks.message('操作成功') // 成功弹出

hooks.notification('恭喜你学会了使用全局通知组件', '操作成功', { type: 'success' }) // 成功弹出

hooks.confirm('确认要删除吗?').then((res) => console.log(res)) // 成功弹出

注:使用时也可以根据 Element Plus 官方文档的配置项传入你需要的配置,按方法参数格式传入即可


http://www.kler.cn/a/405243.html

相关文章:

  • STM32F103 GPIO和串口实战
  • Vue3 -- mock数据完整配置并调试【项目集成6】
  • ZYNQ-7020嵌入式系统学习笔记(1)——使用ARM核配置UART发送Helloworld
  • Python简介以及解释器安装(保姆级教学)
  • C++进阶:哈希表实现
  • Go语言中的Defer机制详解与示例
  • 力扣-Hot100-矩阵【算法学习day.36】
  • 浅谈Spring Boot之缓存处理
  • 初识C++:指针与引用的异同,inline关键字
  • Spring Boot整合Tomcat底层源码分析
  • Jtti:如何知晓服务器的压力上限?具体的步骤和方法
  • Three.js 闪电效果
  • 【2024最新】基于springboot+vue的疫情网课管理系统lw+ppt
  • js批量输入地址获取经纬度
  • 04 —— Webpack打包CSS代码
  • Vue项目开发 formatData 函数有哪些常用的场景?
  • 当你项目服务器磁盘报警
  • 如何利用Python爬虫精准获得1688店铺详情
  • Android 文件分段上传和下载方案
  • 兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
  • Java Servlet详解:Servlet的生命周期、请求处理与响应发送
  • css使用弹性盒,让每个子元素平均等分父元素的4/1大小
  • AI大模型系列之一:大模型原理科普(深度好文)
  • 「San」监听DOM变化的方法
  • 基于SpringBoot和uniapp开发的医护上门系统上门护理小程序
  • linux增量更新