• 简体中文
  • Confirm 确认框

    在执行重要操作前征求确认。

    异步确认

    交互预览异步确认
    basic.tsx
    import { Button, useConfirm, useMessage } from '@sudden3/leaf-ui';
    export function ConfirmBasic() {
      const { confirm, contextHolder } = useConfirm();
      const feedback = useMessage();
      return (
        <>
          <Button
            danger
            variant="outline"
            onClick={async () => {
              const accepted = await confirm({
                title: '删除项目',
                children: '删除后无法恢复,请确认是否继续。',
                type: 'danger',
                onConfirm: () => new Promise((resolve) => setTimeout(resolve, 900)),
              });
              if (accepted) feedback.message.success('项目已删除');
            }}
          >
            删除项目
          </Button>
          <div className="leaf-demo-row">
            {(['default', 'info', 'success', 'warning'] as const).map((type) => (
              <Button
                key={type}
                variant="outline"
                onClick={() =>
                  confirm({
                    type,
                    title: {
                      default: '默认确认',
                      info: '信息提示',
                      success: '操作成功',
                      warning: '操作警告',
                    }[type],
                    children: '请查看提示内容。',
                  })
                }
              >
                {type}
              </Button>
            ))}
          </div>
          {contextHolder}
          {feedback.contextHolder}
        </>
      );
    }
    

    Confirm API

    属性类型默认值说明
    openboolean必填是否显示弹窗
    title / childrenReactNode—标题 / 确认内容
    widthnumber | string480弹窗宽度,数字为像素
    closable / keyboardbooleantrue关闭按钮 / Escape 关闭
    maskClosablebooleanfalse点击遮罩关闭
    onClose() => void—请求关闭,由应用更新 open
    afterClose() => void—关闭动画完成后触发
    confirmText / cancelTextReactNode语言默认值确认 / 取消文字
    type'default' | 'danger' | 'success' | 'warning' | 'info''default'图标与颜色,仅 danger 改变确定按钮颜色
    showCancelbooleansuccess 为 false,其余 true是否展示取消按钮
    dangerbooleanfalse兼容属性,等同 type="danger"
    onConfirm() => void | Promise<void>—确认操作;Promise 完成后关闭,拒绝时显示错误

    useConfirm API

    属性类型默认值说明
    confirm(options: ConfirmOptions) => Promise<boolean>—确认返回 true,取消或卸载返回 false
    contextHolderReactNode—放在目标 ConfigProvider 区域内

    ConfirmOptions

    属性类型默认值说明
    title / childrenReactNode—标题与确认内容
    confirmText / cancelTextReactNode语言默认值按钮文字
    type'default' | 'danger' | 'success' | 'warning' | 'info''default'图标与颜色,仅 danger 改变确定按钮颜色
    showCancelbooleansuccess 为 false,其余 true是否展示取消按钮
    dangerbooleanfalse兼容属性,等同 type="danger"
    onConfirm() => void | Promise<void>—确认时运行,拒绝保留弹窗
    widthnumber | string480弹窗宽度
    closable / keyboardbooleantrue关闭按钮 / Escape 关闭
    maskClosablebooleanfalse点击遮罩关闭

    类型

    定义组件属性或组装变量时可导入相关类型。

    import type { ConfirmProps, ConfirmOptions } from '@sudden3/leaf-ui';

    使用说明

    useConfirm 返回 confirm 与 contextHolder。把 holder 放在 ConfigProvider 内即可继承区域设置。也支持直接渲染 Confirm,控制 open 和 onClose。处理异步确认时会显示加载状态并阻止重复操作。

    其他属性参见 Modal API。

    default 不展示图标;info、warning、success、danger 使用对应图标和颜色。只有 danger 的确定按钮为红色;success 默认隐藏取消按钮,可通过 showCancel 覆盖。按钮属性与 Modal 一致,onCancel 在取消时触发,然后调用 onClose。