前端日积月累之el-select清除选项报错(clearable)

143 阅读1分钟

一、bug描述

写代码的时候出现的一个问题,就是当我用elementUI组件,使用下拉框el-select来展示数据并配置了clearable属性,第一次输入,下拉列表出现,你选择一个是正常的,然后你继续选择的时候,当你的鼠标移到这个下拉框上的时候,控制台就报错Uncaught (in promise) TypeError: Cannot read properties of null (reading ‘insertBefore’),截图如下

image.png

二、解决方案

百度说出现这种情况有如下几种原因:

  • 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字段导致

image.png

  • 改成下面的就解决了

image.png