elementUI的el-dialog destroy-on-close的坑(关闭弹窗时触发了子组件的mounted)

elementUI的el-dialog组件使用destroy-on-close属性时,关闭弹窗会触发子组件mounted事件。

起因是我的el-dialog中包含了一个音频组件,我希望在关闭弹窗的时候初始化并销毁音频组件。于是使用了官方文档中提到的destroy-on-close,然而它却是个大坑。

F12打开控制台,发现加不加destroy-on-close属性,关闭dialog,这段代码都存在,而不是消失。实际它只能初始化dialog组件内部包裹的子组件data数据!!而且子组件的生命周期函数钩子会在关闭弹窗后还会执行一次!

替代方案

用v-if或者key来实现,可以达到销毁组件的效果,使用显示条件来同时控制弹窗和子组件的显示,这样就解决啦,完美。
在这里插入图片描述

我找到了如下代码,该如何去掉弹框<template> <div class="container"> <div style="width: 400px; padding: 30px; background-color: white; border-radius: 5px;"> <div style="text-align: center; font-size: 20px; margin-bottom: 20px; color: #333">欢迎使用</div> <el-form :model="form" :rules="rules" ref="formRef"> <el-form-item prop="username"> <el-input prefix-icon="el-icon-user" placeholder="请输入账号" v-model="form.username"></el-input> </el-form-item> <el-form-item prop="password"> <el-input prefix-icon="el-icon-lock" placeholder="请输入密码" show-password v-model="form.password"></el-input> </el-form-item> <el-form-item> <el-button style="width: 100%; background-color: #333; border-color: #333; color: white" @click="login">登 录</el-button> </el-form-item> <!-- <div style="display: flex; align-items: center">--> <!-- <div style="flex: 1"></div>--> <!-- <div style="flex: 1; text-align: right">--> <!-- 还没有账号?请 <a href=" ">注册</a >--> <!-- </div>--> <!-- </div>--> </el-form> </div> <el-dialog title="郑重声明" :visible.sync="dialogVisible" :show-close="false" width="40%" :close-on-click-modal="false" destroy-on-close> <div style="font-size: 16px; line-height: 26px; margin-bottom: 20px; text-align: justify"> 本平台已经对本项目申请了<b style="color: #000">软件著作权</b>,完善了所有该项目资源相关的法律文件材料。 <b style="color: #ff2424">本平台付费用户可以学习该项目自己使用,禁止在其他平台做转手或者倒卖,禁止在私域未经授权分享源码,禁止上传代码到github、gitee、gitlab等代码托管平台。</b> 我们公司的法务会在各大平台(例如:闲鱼、小红书、B站、优快云等社交媒体平台)不定期检索, 一旦发现倒卖或转手的现象,我们会第一间收集好证据,向你发送律师函。 <b style="color: #000">现在互联网所有账号都是实名制,我们可以明确追溯到你。请大家不要做违法的事情,不要因为一糊涂给自己的人生轨迹抹上一层黑。</b> </div> <div style="margin-top: 10px; font-size: 16px; color: #000"> 本项目唯一官方平台:<b>项目实战网(<a href="https://www.javaxmsz.cn" target="_blank">https://www.javaxmsz.cn</a >)</b> </div> <div style="margin-top: 5px; font-size: 16px"></div> <div slot="footer" class="dialog-footer"> <el-butt
最新发布
03-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值