先说解决方案:加上v-if每次都会销毁和重新创建
<el-dialog
title="提示"
:visible.sync="dialogVisible"
v-if="dialogVisible"
width="30%"
:before-close="handleClose">
</el-dialog>
在项目中遇到一个场景,点击table中的授权按钮,去给这一行对应的用户授权角色
逻辑:点击授权按钮,显示授权dialog,在子组件的created生命周期中去获取可以授权的角色的一些信息,但是发现当el-dialog显示一次,下一次就不会调用created生命周期函数中的初始化方法了。。。
检查发现dialog切换是使用display:none来控制的,我理解就相当于v-show的作用,并不是真正的创建和销毁,而是通过display来切换的
为了让每次都创建,给el-dialog加上v-if指令,就会每次都销毁和创建了
回顾一下v-if 和 v-show的区别
1.什么是v-show指令
v-show和v-if的能够一样都是条件渲染, 取值为true就显示, 取值为false就不显示
2.v-if和v-show区别
v-if: 只要取值为false就不会创建元素
v-show: 哪怕取值为false也会创建元素, 只是如果取值是false会设置元素的display为none
3.v-if和v-show应用场景
由于取值为false时v-if不会创建元素, 所以如果需要切换元素的显示和隐藏, 每次v-if都会创建和删除元素
由于取值为false时v-show会创建元素并设置display为none, 所有如果需要切换元素的显示和隐藏,
不会反复创建和删除, 只是修改display的值
所以: 如果企业开发中需要频繁切换元素显示隐藏, 那么推荐使用v-show, 否则使用v-if