elementUI的el-dialog组件使用destroy-on-close属性时,关闭弹窗会触发子组件mounted事件。
起因是我的el-dialog中包含了一个音频组件,我希望在关闭弹窗的时候初始化并销毁音频组件。于是使用了官方文档中提到的destroy-on-close,然而它却是个大坑。
F12打开控制台,发现加不加destroy-on-close属性,关闭dialog,这段代码都存在,而不是消失。实际它只能初始化dialog组件内部包裹的子组件data数据!!而且子组件的生命周期函数钩子会在关闭弹窗后还会执行一次!
替代方案
用v-if或者key来实现,可以达到销毁组件的效果,使用显示条件来同时控制弹窗和子组件的显示,这样就解决啦,完美。