Element Plus 官网对于 before-close
方法的解释可能存在误导。
在 Element Plus 的 Drawer
组件中,before-close
方法是一个钩子函数,它允许你在抽屉关闭前执行一些自定义逻辑。如果 before-close
钩子函数返回 false
,或者传入的 done
回调函数带有 false
参数被调用,那么抽屉将不会关闭。
在你提供的代码示例中:
const handleClose = (done: () => void) => {
ElMessageBox.confirm('Are you sure you want to close this?')
.then(() => {
done() // 调用 done 而不带参数,表示确认关闭
})
.catch(() => {
// catch error
done(false) // 如果用户取消了操作,通过传入 false 来终止关闭
});
}
当用户确认关闭时,你调用 done()
不带任何参数,这实际上表示继续关闭抽屉。而如果用户取消了关闭操作,你调用 done(false)
,这会终止关闭抽屉。
因此,Element Plus 官网上的解释“当 done
不设置参数或参数设置为 true
时,终止关闭”是不准确的。实际上,不设置参数或设置参数为 true
或 undefined
时,应该继续关闭抽屉。只有当参数设置为 false
时,抽屉的关闭才会被终止。
正确的行为描述应该是:
- 当
done
被调用且不带参数或参数为 true
时,抽屉将继续关闭。 - 当
done
被调用且参数为 false
时,抽屉将终止关闭。
所以,你提到的官网上对于 before-close
方法的解释确实存在错误,并且你的理解是正确的。
放到这里是有误的,不传参数应该是执行关闭。
对于element来说,这个说法是没问题的,可以看出element是参数为false才执行关闭


而element-plus是布尔值true终止关闭,布尔值false执行关闭