最近在用elementplus重构别人的前端轮子的时候,出现了这么一个报错:
Uncaught (in promise) TypeError: Cannot set properties of null (setting 'visible')
出现场景为调用 message 弹窗组件时,如果没有很好的处理好后端给的数据,这边就会直接报这个错误然后整个页面的所有按钮都失效。
我本以为是自己的代码写的有问题,结果这个问题拖了大概有大半月,在前段日子才看到github有相关的 issue… 是vue3版本和elementplus不兼容导致的问题…
官方给出的解决方案有如下两种:
- 升级vue3版本到vue 3.2.32后续版本测试可以修复。
- 参考如下,直接修改组件底层代码。
github.com/element-plus/element-plus/pull/8797
至于出错的原因其实是:
复现步骤: 已测试在指定 vue 3.2.20-3.2.31版本是能够直接复现该bug。与element-plus版本无关。
目前排查不是element-plus组件的原因,是vue在综上提到的版本transtion组件存在问题,而ElMessage组件是用到了transition组件。