按需引入 ElMessage,没有样式且类型检查失败

本文主要探讨在使用Element-Plus时遇到的按需引入ElMessage弹框样式丢失、TS类型检查失败以及ESLint检查失败的问题,并提供了详细的解决方案。针对样式问题,建议避免手动导入,而是全局导入所有样式或遵循按需导入规则。对于TS类型检查失败,需确保tsconfig.json中包含相关类型文件。而对于ESLint检查,可以通过配置使eslint识别自动导入的全局变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

ElMessage 弹框没有样式

问题描述

Element-plus 在使用 ElMessage 消息弹框的时候没有样式,按照官方的按需加载的方式引入的

import {
    ElMessage } from "element-plus";

ElMessage.success('修改成功!')

解决方案

只要是按需导入了,就不要去手动导入。要不然样式无法生效。

  • 当然如果手动导入了模块,再去全局导入所有 element-plus 样式,这也能生效。但这已经不是按需导入了
// 去掉引用
// import { ElMessage } from 'element-plus'

ElMessage.success('修改成功!')

ts 类型检查失败

问题描述

如果不手动 import 导入,会发现 ElMessage 会类型检查失败。会报找不到名称ElMessage这样的一个错误 :
image.png
image.png

虽然开发环境可以忍着红线不去管它,可以正常使用,但打包构建会失败。因为构建时会有严格的类型检查 vue-tsc。因此这个问题必须解决。

// 处理单个删除按钮点击事件 const del = (user_id) => { if (!user_id) { ElMessage.error('用户ID无效'); return; } ElMessageBox.confirm('此操作将永久删除该用户, 是否继续?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', customClass: 'center-message-box' // 添加自定义类 }) .then(() => { reqUserDelete(user_id) .then(res => { if (res && res.data && res.data.code === 200) { ElMessage.success('删除成功'); load(); // 重新加载数据 } else { ElMessage.error(res.data.message || '删除失败'); } }) .catch(error => { console.error('删除失败:', error); ElMessage.error('删除失败'); }); }) .catch(() => { ElMessage.info('已取消删除'); }); }; // 处理表格选中行变化事件 const handleSelectionChange = (rows) => { data.selectedRows = rows; }; // 批量删除方法 const deleBatch = () => { if (data.selectedRows.length === 0) { ElMessage.warning('请选择要删除的用户'); return; } ElMessageBox.confirm('此操作将永久删除选中的用户, 是否继续?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', customClass: 'center-message-box' // 添加自定义类 }) .then(() => { const user_ids = data.selectedRows.map(row => row.user_id); const deletePromises = user_ids.map(user_id => reqUserDelete(user_id)); Promise.all(deletePromises) .then(results => { results.forEach((res, index) => { if (res && res.data && res.data.code === 200) { ElMessage.success(`用户 ${user_ids[index]} 删除成功`); } else { ElMessage.error(`删除用户 ${user_ids[index]} 失败`); } }); load(); // 重新加载数据 }) .catch(error => { console.error('批量删除失败:', error); ElMessage.error('批量删除失败'); }); }) .catch(() => { ElMessage.info('已取消批量删除'); }); }; 我的删除提示框一直显示在左边,无法出现在中间,怎么解决
最新发布
03-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值