我有一个来自PrimeVue的<ConfirmDialog>
组件,它可以正常工作,除了它在激活时会多次打开;作为参考,我在整个过程中多次使用该组件,有些ConfirmDialogs只打开一次,大多数通常打开两次。2当接受或拒绝对话框时,它们都会立即关闭,但是,当按对话框右上角的“X”时,它一次只关闭一个示例,显示多个对话框已经打开。
我尝试过的:使用密钥
<ConfirmDialog key="myDialog" />
...
const confirmer = (
message,
header,
icon,
) => {
confirm.require({
accept: () => { confirm.close()},
reject: () => { confirm.close()},
key: 'myDialog'
})}
谢谢你的帮助。
1条答案
按热度按时间kupeojn61#
我遇到了这个问题,我发现这是由于在DOM标记中声明了多个
ConfirmDialog
组件造成的。例如,如果您为每个使用它的组件添加一个确认对话框,然后您碰巧同时在页面上加载了2个以上的组件,您将看到该页面上存在的每个<ConfirmDialog />
对应一个对话框。解决方案是在根Vue组件中只声明一次ConfirmDialog,然后在每次调用它时,只导入
useConfirm
函数,然后使用该函数调用对话框。例如:
App.vue
每种其他组分: