今天在解决项目BUG的时候,发现控制台突然多出了一个错误,

Error in beforeDestroy hook: “Error: [ElementForm]unpected width

简单分析过后,确定了问题出在了 Form 表单中,但不影响正常功能,看了一些文章,同样的问题也会出现在dialog中,使用了v-show以及label-width=”auto”。

回头看了看自己写的代码,为了解决特殊场景,我确实是在form表单中使用了v-show,同时label-width为auto。

究其原因,v-show 并不会删除dom,只是控制了是否显示。报错的分析:获取el-form的宽度失败,因为auto的时候没有固定的宽度,getComputedStyle().width返回的应该就是auto,组件在添加和删除处理宽度就会把auto强制换为int时变为NaN,所以报错了。

解决方法:

1.label-width=”auto”,设定为固定值,这里我没用这个,会影响我deep的el样式;

2.v-show替换为v-if;

推荐文章:[Bug 报告] beforeDestroy 钩子中的错误