1. docs
sss
  • docs
    • docs
      • EleProLayout 高级布局组件使用文档
      • Markdown - ByteMdEditor
      • 下拉菜单 - EleDropdown
      • 主题功能
      • 二维码 - EleQrcode
      • 全局配置 - EleConfigProvider
      • 其他功能
      • 分段器 - EleSegmented
      • 分页组件 - ElePagination
      • 加载中 - EleLoading
      • 包裹组件 - EleApp
      • 卡片组件 - EleCard
      • 可选卡片 - EleCheckCard
      • 图标选择 - EleIconSelect
      • 富文本 - TinymceEditor
      • 导航菜单 - EleMenus
      • 工具方法与表单数据操作文档
      • 抽屉组件 - EleDrawer
      • 文字提示 - EleTooltip
      • 文本组件 - EleText
      • 标签输入 - EleEditTag
      • 标签页 - EleTabs
      • 树下拉 - EleTreeSelect
      • 步骤条 - EleSteps
      • 气泡确认框 - ElePopconfirm
      • 消息提示 - EleMessage
      • 统计图表 - VueEcharts
      • 表格下拉 - EleTableSelect
      • 表格组件 - EleDataTable
      • 警告提示 - EleAlert
      • 页面容器 - ElePage
      • 高级弹窗 - EleModal
      • 高级表格 - EleProTable
  1. docs

消息提示 - EleMessage

5.18.1.快速使用
消息提示组件是对 ElMessage 的扩展,与 ElMessage 的使用方式完全一致,使用示例:

运行代码 新窗口打开
5.18.2.属性列表
支持 ElMessage 的全部属性(请查看 Element 文档),这里只列出额外增加的属性:
需要注意 EleMessage 并不是组件的形式,所以按需加载插件无法自动引入样式,确保 App.vue 中使用了 EleApp 组件,当然也可以手动引入样式:
// 如果使用按需引入方式又不想使用 EleApp 组件可以手动引入 EleMessage 的样式
import 'ele-admin-plus/es/ele-app/style/message/index';
5.18.3.加载提示
EleMessage 还额外提供了一个 loading 用于显示一个全屏的加载提示,且会锁住整个页面使无法点击,使用示例:

setTimeout(() => {
loading.close();
}, 3000);
};

/** 显示遮罩层 */
const showLoading2 = () => {
const loading = EleMessage.loading({ message: '正在加载中..', mask: true });

setTimeout(() => {
loading.close();
}, 3000);
};

/** 设置更多参数 */
const showLoading3 = () => {
const loading = EleMessage.loading({
message: '正在加载中..',
mask: true,
plain: true, // 简约风格
centered: true, // 居中显示
duration: 3000 // 3s后自动关闭, 默认不会自动关闭
});

//loading.close();
};
</script>
运行代码 新窗口打开
如果需要消息内容响应式修改,可以将 message 参数设置为一个函数,示例:
<template>
<el-button @click="showLoading">打开加载框</el-button>
</template>

<script lang="ts" setup> import { ref } from 'vue'; import { useMessage } from 'ele-admin-plus'; const message = useMessage(); const progress = ref(0); const showLoading = () => { progress.value = 0; const loading = message.loading({ message: () => `正在导入......${progress.value}`, plain: true, mask: true, centered: true }); const timer = setInterval(() => { progress.value += 5; if (progress.value >= 100) { loading.close(); clearInterval(timer); } }, 100); }; </script>

运行代码 新窗口打开
5.18.4.useMessage
还封装了 hook 的使用形式(v1.2.0新增),通过 useMessage 使用会有上下文,支持限制在主体区域展示,支持全局配置,使用示例:
<template>

<div> <el-button @click="showMessage">success</el-button> <el-button @click="showMessage2">限制在主体区域展示</el-button> </div> </template> <script lang="ts" setup> import { useMessage } from 'ele-admin-plus'; const message = useMessage(); /* // 还可以设置局部的全局参数, 还支持在 ele-config-provider 中设置全局参数 const message = useMessage({ inner: true, mask: true, centered: true, plain: true, offset: 100 }); */ const showMessage = () => { message.success('这是一条成功的提示'); // 设置更多参数 message.success({ message: '这是一条成功的提示', showClose: true, plain: true }); }; const showMessage2 = () => { message.success({ type: 'success', message: '这是一条成功的提示', // 这些参数在全局参数中配置后就可以不用每个调用都写了 inner: true, // 限制在主体区域展示 plain: true }); }; </script>

运行代码 新窗口打开
  ElMessage 的内容部分本质也是一个 vue 组件,为了使用方便 ElMessage 是直接提供 js 方法调用动态创建组件, 但这种形式没有上下文,无法读取到 config-provider 的全局配置,组件的生命周期也有问题, 比如用户管理页面卸载了,但用户管理页面创建的消息提示的组件是不会进入 unmount 生命周期的, 而限制在主体区域展示的功能需要监听生命周期,所以需要使用 useMessage 的形式调用。
限制在指定区域
还可以通过 appendTo 参数自定义需要限制显示的位置,示例:
<template>

<div> <el-button @click="showMessage">限制在指定区域展示</el-button> <!-- 为指定区域增加 ref 以便能获取到区域引用 --> <div ref="demoMessageWrapRef"class="ele-message-wrapper":style="{ width: '600px', height: '280px', border: '1px solid red', position: 'relative' }"> </div> </div> </template> <script lang="ts" setup> import { ref } from 'vue'; import { useMessage } from 'ele-admin-plus'; const message = useMessage(); const demoMessageWrapRef = ref(); const showMessage = () => { message.success({ message: '这是一条成功的提示', plain: true, inner: true, showClose: true, // 通过 appendTo 设置需要显示的指定区域 appendTo: demoMessageWrapRef.value }); }; </script>

运行代码 新窗口打开
例如使用抽屉组件时想限制提示消息显示在抽屉的内容区域:
<template>

<div> <el-button @click="visible=true">打开抽屉</el-button> <ele-drawer :size="430" v-model="visible" title="抽屉"> <el-button @click="showMessage">显示提示</el-button> <div ref="demoMessageWrapRef" class="ele-message-wrapper"></div> <template #footer> <el-button @click="visible=false">取消</el-button> <el-button type="primary">保存</el-button> </template> </ele-drawer> </div> </template> <script lang="ts" setup> import { ref } from 'vue'; import { useMessage } from 'ele-admin-plus'; const message = useMessage(); const visible = ref(false); const demoMessageWrapRef = ref(); const showMessage = () => { message.success({ message: '这是一条成功的提示', plain: true, inner: true, showClose: true, // 通过 appendTo 设置需要显示的指定区域 appendTo: demoMessageWrapRef.value }); }; </script>

运行代码 新窗口打开
5.18.5.useMessageBox
消息弹出框还封装了 hook 的使用形式(v1.2.0新增),使用 useMessageBox 会有上下文,支持限制在主体区域展示,支持全局配置,使用示例:
<template>

<div> <el-button @click="showMessageBox">打开消息弹出框</el-button> <el-button @click="showMessageBox2">限制在主体区域展示</el-button> </div> </template> <script lang="ts" setup> import { useMessageBox } from 'ele-admin-plus'; const messageBox = useMessageBox(); /* // 还可以设置局部的全局参数, 还支持在 ele-config-provider 中设置全局参数 const messageBox = useMessageBox({ inner: true, draggable: true, closeOnClickModal: false }); */ const showMessageBox = () => { messageBox.confirm( '您的专业版会员还有 6 天到期,请及时续费,以免影响正常使用!', '到期提醒', { type: 'warning', cancelButtonText: '下次再说', confirmButtonText: '前往续费' } ).then(() => { console.log('点击了前往续费'); }).catch(() => {}); }; const showMessageBox2 = () => { messageBox.confirm( '您的专业版会员还有 6 天到期,请及时续费,以免影响正常使用!', '到期提醒', { type: 'warning', cancelButtonText: '下次再说', confirmButtonText: '前往续费', inner: true // 限制在主体区域展示 } ).then(() => { console.log('点击了前往续费'); }).catch(() => {}); }; </script>

  限制在主体区域展示的功能需要监听生命周期,而 ElMessageBox 方法调用的形式没有上下文, 弹框生命周期是同 App.vue 的不是同调用方法的页面的,所以需要使用 useMessageBox 这种 hook 的形式调用。
运行代码 新窗口打开

修改于 2025-12-20 03:37:01
上一页
气泡确认框 - ElePopconfirm
下一页
统计图表 - VueEcharts
Built with