Vue 解决在element中使用$notify在提示信息中换行问题
作者:No Silver Bullet 发布时间:2024-04-28 10:53:35
在项目开发过程中,遇到如下用户体验提升需求:需要实现错误提示时根据后台返回错误列表信息,换行展示。
实现方式如下:
通过F12元素查看,在对应的样式中加入white-space:pre-wrap,该样式的主要作用是识别字符串中的换行符"\n",故需要在待展示的信息字符串中加入相应的换行标识符。
在$notify消息提示中,作用于el-notification:
.el-notification {white-space:pre-wrap !important; }
有的童鞋可能试过样式white-space:pre,此时会出现的若提示信息内容较长时显示不齐全的问题。
即使使用自动换行样式(也无效):
/*设置内容超出后自动换行*/
word-wrap: break-word;
word-break: break-all;
具体区别可参加以下参数部分。
补充知识:关于vue ts项目同时引入element-ui和ant-design,ts报错不能编译的解决方法。
vue ts版本同时引入ant和element不能打包。
Subsequent property declarations must have the same type. Property ‘$confirm' must be of type ‘(modalOptios: ModalOptions) => ModalConfirm', but here has type ‘ElMessageBoxShortcutMethod'.
Subsequent property declarations must have the same type. Property ‘$message' must be of type ‘Message', but here has type ‘ElMessage'.
通常vue项目只会用到一个ui库,但是往往会有一些特殊场景一个ui库不满足我们业务场景,我工作中使用到了ant-design-vue(全局引入)和element-ui(按需加载),同时项目是ts版本。
elemt,ant ts报错
我搜索了很多的解决方案,都不符合,我发现它爆错的地方是两个的类型描述文件冲突了,这时候我把node_modules/element-ui/types/message-box.d.ts 和 node_modules/element-ui/types/message.d.ts 相关地方注释后再打包果然不报错了。
既然能通过注释的方式解决打包的问题,但是我们不能每次都去注释一次,这时候马上想到node的 fs包能帮我友好解决这个问题。
解决方案:
在项目根目录创建 config文件夹、os.js文件
编写os.js文件,如下
/**
* 这个文件在这是为了解决同时引入element-ui / ant-design ts 爆粗哦,
* 解决版本把node_modules 相关文件注释了
* */
let fs = require('fs')
let path = require('path')
let src1 = '../node_modules/element-ui/types/message.d.ts'
annotation(src1, '$message: ElMessage')
let src2 = '../node_modules/element-ui/types/message-box.d.ts'
annotation(src2, '$confirm: ElMessageBoxShortcutMethod')
function annotation(src, params) {
fs.readFile(path.resolve(__dirname, src), 'utf8', function(err, files) {
if (!err && files !== '') {
let val = params
let has = `// ${params}`
let start = files.indexOf(val)
let start2 = files.indexOf(has)
if (start > -1 && start2 === -1) {
var result = files.replace(val, has)
fs.writeFile(
path.resolve(__dirname, src),
result,
'utf8',
function(err) {
if (err) {
console.log(err)
}
}
)
console.log(params + ' 注释成功!')
} else {
console.log('没有需要注释对或者已经注释了!')
}
} else {
console.log(
params + ' 没有需要注释对或者已经注释了或者注释文件失败!'
)
}
})
}
原来的命令,我们只需要修改build部分
编写package.json运行命令,把我们编写的os.js加入到运行命令
"scripts": {
"build": "node config/os.js&vue-cli-service build"
},
现在运行npm run build
大功告成!
来源:https://shq5785.blog.csdn.net/article/details/105164079
猜你喜欢
- 前言大家都知道其实学习Django非常简单,几乎不用花什么精力就可以入门了。配置一个url,分给一个函数处理它,返回response,几乎都
- Hi,好久不见,我还是那颗翻滚的老鼠屎。处理数据时想求两个表格求不相交的部分,或许是对知识的匮乏限制了我的想象力,并未找到直接求的方法,在这
- 该模块用perl的数组代表一个文件,文件的每一行对应数组的一个元素,第一行为元素0,第二回为1,... 文件本身实际并不加载到内
- 在pytorch中一般只对叶节点进行梯度计算,也就是下图中的d,e节点,而对非叶节点,也即是c,b节点则没有显式地去保留其中间计算过程中的梯
- SQL Server中的伪列下午看QQ群有人在讨论(非聚集)索引的存储,说,对于聚集索引表,非聚集索引存储的是索引键值+聚集索引键值;对于非
- 目录urllib库urllib.request模块Request对象1 . 请求头添加2. 操作cookie3. 设置代理urllib.pa
- 最近在看《Effective Python》,里面提到判断字符串或者集合是否为空的原则,原文如下:Don't check for e
- parentNode和parentElement功能一样,childNodes和children功能一样。但是parentNode和chil
- Python 中提供了对时间日期的多种多样的处理方式,主要是在 time 和 datetime 这两个模块里。一、time 模块time 模
- 前言在所有编程语言中都涉及到大量的字符串操作,可见熟悉对字符串的操作是何等重要。本文通过示例详细介绍了Go语言实现字符串切片赋值的方法,感兴
- 序列的逆序方式1. range 函数一般 for 循环中总会用到 range 函数来进行顺序遍历,同样的,range 也能表示序列的逆序。在
- 介绍vue-router相当于vue内部跳转链接,将需要切换的页面在vue-router里注册,在项目里配置就能完成页面的切换,它不仅能完成
- PERCONA PERFORMANCE CONFERENCE 2009上,来自雅虎的几位工程师带来了一篇”Efficient Paginat
- 需求一般Django开发为了保障避免 csrf 的攻击,如果使用Django的模板渲染页面,那么则可以在请求中渲染设置一个csrftoken
- 本文实例讲述了python网络编程之数据传输UDP实现方法。分享给大家供大家参考。具体分析如下:一、问题:你觉得网络上像msn,qq之类的工
- 在保持合理的数据采集上,使用python爬虫也并不是一件坏事情,因为在信息的交流上加快了流通的频率。今天小编为大家带来了一个稍微复杂一点的应
- 目录1.使用说明2.准备3.语法3.1 变量及赋值3.2 入参出参3.3 流程控制-判断3.4 流程控制-循环3.5 流程控制-退出、继续循
- Django 作为后端Web开发框架,有时候我们需要用到定时任务来或者固定频次的任务来执行某段代码,这时我们就要用到Celery了。Djan
- 发现问题最近在工作中遇到一个问题,后端写好,前端写好,postman测试做好,一切都没有问题,但是实际用axios来实现登陆功能的时候问题就
- 用 xlrd 模块读取 Excelxlrd 安装cmd 中输入pip install xlrd 即可安装 xlrd 模块若失败请自行百度”p