elementui弹窗叉号关闭不起作用

element ui的弹窗种 :before-close="cancel"❌关闭不起作用、

img

父组件有多个子组件,这些子组件都是弹窗。按往常写:before-close="cancel"关闭弹窗,cancel方法没有执行。弹窗无法关闭。
如果把 :visible="isolationVisible" 改成 :visible.sync="isolationVisible"弹窗可以关闭,但是再点击其他按钮,这个弹窗还会先弹出来,然后再执行你点的其他按钮的事件。不知道我这样描述大家能看明白吗、

看文档是要加sync的,故此需要改成:visible.sync="isolationVisible"。按以下两个步骤排查看看:

  1. isolationVisible是否已在data中声明初始值

  2. 点击其他按钮的事件时,事件加上.stop阻止事件冒泡看看

在使用 :before-close="cancel" 时,需要结合 .sync 才能正确关闭弹窗。使用 :visible.sync="isolationVisible" 是因为它会保证同步关闭弹窗。但是在执行其他按钮事件时弹窗会首先出现,这是因为它只保证同步关闭,而不能保证同步更新。因此,建议检查代码,确保其他事件的执行不会导致弹窗的不正确表现。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^