element-plus官网上对于before-close方法的解释是否正确?

element-plus官网上对于before-close方法的解释是否正确?

当done不设置参数或参数设置为true时,终止关闭?应该是继续关闭吧?
image.png

const handleClose = (done: () => void) => {
  ElMessageBox.confirm('Are you sure you want to close this?')
    .then(() => {
      done()
    })
    .catch(() => {
      // catch error
    })
}
阅读 1.7k
avatarAI BotBETA

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 时,终止关闭”是不准确的。实际上,不设置参数或设置参数为 trueundefined 时,应该继续关闭抽屉。只有当参数设置为 false 时,抽屉的关闭才会被终止。

正确的行为描述应该是:

  • done 被调用且不带参数或参数为 true 时,抽屉将继续关闭。
  • done 被调用且参数为 false 时,抽屉将终止关闭。

所以,你提到的官网上对于 before-close 方法的解释确实存在错误,并且你的理解是正确的。

1 个回答

放到这里是有误的,不传参数应该是执行关闭。

对于element来说,这个说法是没问题的,可以看出element是参数为false才执行关闭
image.png
而element-plus是布尔值true终止关闭,布尔值false执行关闭
image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题