Bootstrap

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 官方文档的配置项传入你需要的配置,按方法参数格式传入即可

;