一、bug描述
写代码的时候出现的一个问题,就是当我用elementUI组件,使用下拉框el-select来展示数据并配置了clearable属性,第一次输入,下拉列表出现,你选择一个是正常的,然后你继续选择的时候,当你的鼠标移到这个下拉框上的时候,控制台就报错Uncaught (in promise) TypeError: Cannot read properties of null (reading ‘insertBefore’),截图如下
二、解决方案
百度说出现这种情况有如下几种原因:
- v-if 导致
- 在 v-if 值为 false 时,如果操作了 v-if 控制的 DOM,可能会因为该 DOM 元素不存在而报错。
- 解决方案:v-show 替换 v-if
- el-dialog 组件导致
- 默认弹框是关闭的,DOM中没有弹框中的内容。打开弹框再关闭后,弹框中的 DOM 元素没有被销毁,可能会因为不该存在的 DOM 元素而报错(我的报错就是由此导致)。
- 解决方案:给 el-dialog 组件增加 destroy-on-close 属性
- el-table 组件导致
- el-table-column渲染时报错,若 scope.row.field(field为任意字段值)不存在,对其直接执行 length、toString() 等方法而报错。
- 解决方案:scope.row.field?.length
三、我项目中遇到的情况
- 项目中用了el-table插槽的scope字段导致
- 改成下面的就解决了