表现:
设置了destroy-on-close为true的一个el-dialog,在关闭时候,触发了子组件的mounted。
查找原因:
在element的源码中,找到了destroy-on-close的实现原理:


当visible改变为false,即关闭dialog的时候,如果用户设置了destroyOnClose=true,则执行key++;
key是绑定在较外层的div上的,key值的变化会导致这个div重新渲染。
所以我们知道了,设置destroyOnClose=true并不会如同element官方文档描述的这样

而是刷新dialog内部的元素。
这属于是element官方文档措辞不严谨的问题。
解决:
如果你的需求只是销毁dialog中的元素,那么拉黑该属性,改用v-if。
本文探讨了Element UI中dialog组件的destroy-on-close属性的工作原理,指出其实际效果并非如官方文档所述。当destroy-on-close设为true时,实际上是触发了dialog内部元素的刷新,而非销毁。为了解决这个问题,建议使用v-if来替代此属性以达到销毁组件的目的。此文章揭示了文档表述的不严谨,并提供了相应的解决方案。
1661

被折叠的 条评论
为什么被折叠?



