Vue解决element-ui消息提示$message重叠问题
错误出现
贴一段代码
函数中程序同步执行,先后触发两个$message,此时两个$message的弹窗重叠
预期的情况是下图这样一上一下出现
这因为vue的异步更新队列有缓冲机制,第一次$message触发时,并没有更新dom,导致第二个$message取item.$el.offsetHeight取到的高度为0,所以第二个$message只是下移了默认的offset(即16px),并没有加上第一个$message的offsetHeight。
解决这个问题的办法
1、如果是单一场景,用$nextTick处理
this.$nextTick(() => { this.$message(...); });
可以保证dom更新之后再触发$message,正确的获取到$el.offsetHeight
2、将第二个$message写在setTimeout回调函数中
(其思想与$nextTick同理)
3、async + await
注意
如果有多个(>=3个)$message,$nextTick以及await只能解决第1个与第2个重叠的情况,第2个、第3个还会重叠,这种情况改用setTimeout。
以上就是Vue解决element-ui消息提示$message重叠问题的详细内容,更多关于Vue解决message重叠的资料请关注脚本之家其它相关文章!
相关文章
vue3使用拖拽组件draggable.next的保姆级教程
做项目的时候遇到了一个需求,拖拽按钮到指定位置,添加一个输入框,这篇文章主要给大家介绍了关于vue3使用拖拽组件draggable.next的保姆级教程,需要的朋友可以参考下2023-06-06解决修复报错Error in render:TypeError:Cannot read&n
这篇文章主要介绍了解决修复报错Error in render:TypeError:Cannot read properties of undefined(reading ‘ipconfig‘)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-03-03Vue 如何使用props、emit实现自定义双向绑定的实现
这篇文章主要介绍了Vue 如何使用props、emit实现自定义双向绑定的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-06-06
最新评论