element-plus版本升级遇到的问题及踩坑总结

element-plus版本升级背景

项目中使用的element-plus版本是V1.1.0-beta.3非正式版本,原因是项目创建时,element-plus还未发布正式版本,需要升级到正式版本,正式版本修复了一些Bug。

element-plus版本历程

  1. V2.0.0 2022-02-07发布,第一个稳定的release版本,之前全是beta版本,截止2023-08-10,最新的版本是V2.3.9(2023-08-04发布的)

  2. V1.3.0-beta.1(2021-12-31发布)有破坏性改动
    V1.3.0-beta.1破坏性改动在这里插入图片描述

  3. V1.2.0-beta.1(2021-10-30发布)有破坏性改动
    在这里插入图片描述

升级过程中遇到的问题

v1.1.0-beta.24升级到v1.2.0-beta.1升级遇到的问题

1、elform对外暴露的ref方式改变,导致项目中原来的代码报错,需要改变使用的方式。

原来的elform
图1 elForm原来的ref(普通字符串)

图2 elForm升级后的的ref(Symbol)

2、图标引用变化

旧版本使用element图标的方式是,通过给i标签传class实现,底层是通过伪类来实现图标渲染的,图标存在element-icons.woff字体文件中,每次页面刷新需要重新请求这个字体文件。
在这里插入图片描述
旧版本使用element图标的方式
在这里插入图片描述
旧版本通过伪类显示图标
在这里插入图片描述旧版本element定义伪类样式的文件

新版本通过组件引用element图标,底层是svg资源文件,优点是不用每次去请求75kb的资源文件。
在这里插入图片描述
新版本全局注册element图标组件
在这里插入图片描述
新版本使用图标组件

3、element-plus组件主题不生效

在这里插入图片描述
v1.1.0-beta.3版本设置element-plus主题色
在这里插入图片描述
v1.2.0-beta.1版本设置element-plus主题色

v1.2.0-beta.1升级到v2.0.0升级遇到的问题

1、Dropdown组件样式错乱

表格的行内操作列有使用到GDropdown组件,本来应该显示成这样子
在这里插入图片描述
升级到v2.0.0后,样式错乱
在这里插入图片描述
其原因是GDropdown组件是基于el-dropdown组件二次封装实现的,v2.0.0版本el-dropdown组件有了很大的改变,v1.1.0-beta.3版本el-dropdown组件用到了el-popper组件,v2.0.0版本el-dropdown组件用的是el-tooltip组件。从v1.1.0-beta.3版本到v2.0.0版本,el-popper组件底层实现变化较大,导致了样式错乱问题。
在这里插入图片描述
V1.1.0-beta.3版本el-popover组件,jsx写法
在这里插入图片描述
v2.0.0版本el-tooltip组件,dom写法
解决方案是,基于V2.0.0版本的el-dropdown改造GDropdown组件,改成el-tooptip的实现方式
在这里插入图片描述### 2、Select组件点击外部报错,无法关闭问题
在这里插入图片描述
useClickOutside函数报错,没有获取到el-popper的dom实例,原因是el-popover底层实现逻辑改变,V1.1.0-beta.3版本el-popover组件,是jsx写法,而V2.0.0版本的el-popover是基于el-tooltip的dom写法。
在这里插入图片描述
V1.1.0-beta.3版本el-popover组件,jsx写法
在这里插入图片描述
V2.0.0版本的el-popover实现,基于el-tooltip的dom写法
从v1.1.0-beta.3版本到v2.0.0版本,el-popper组件底层实现变化较大,获取不到el-popper的ref实例,导致下拉关不掉。解决方案是,获取下拉内容div的ref实例,传给useClickOutside,判断当前点击的元素是否包含在下拉内容的div实例里,判断要不要关闭下拉。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要升级Element Plus的版本,你需要按照以下步骤进行操作: 1. 首先,打开你的项目文件夹,在终端中执行以下命令,使用npm安装最新版本Element Plus: ``` npm install element-plus@latest ``` 2. 等待安装完成后,你可以检查项目的package.json文件,确保Element Plus的版本已经更新到最新。 3. 接下来,你需要在你的项目中更新Element Plus的引用。根据你的项目使用的构建工具(如webpack、vue-cli等),可以采取不同的方式进行引用更新。以下是一些常见的方式: - 如果你使用的是Vue CLI 3或以上版本,可以在main.js文件中更新Element Plus的引用: ```javascript import { createApp } from 'vue' import ElementPlus from 'element-plus' import 'element-plus/lib/theme-chalk/index.css' createApp(App).use(ElementPlus).mount('#app') ``` - 如果你使用的是Vue CLI 2或以下版本,可以在main.js文件中更新Element Plus的引用: ```javascript import Vue from 'vue' import ElementPlus from 'element-plus' import 'element-plus/lib/theme-chalk/index.css' Vue.use(ElementPlus) new Vue({ el: '#app', render: h => h(App) }) ``` 4. 更新完引用后,你可以重新运行你的项目,检查是否成功升级了Element Plus的版本。 注意:在升级Element Plus之前,请确保备份好你的项目文件,以防升级过程中出现意外情况。此外,升级版本可能会引入一些不兼容的变化,所以在升级后,你可能需要根据Element Plus的更新文档进行一些代码调整和修复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值