Antd v5.8 modal.confirm 手动控制关闭

本文介绍了如何在AntDesign(Antd)中使用Modal组件的confirm方法创建弹窗,并详细讲解了如何通过onOk事件实现手动控制弹窗的关闭逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发中经常需要使用操作提示弹窗,在 Antd 中的 Modal 组件提供了 confirm 方法,可以快速实现操作提示弹窗。本文就来介绍一下如何使用 Modal.useModal 创建弹窗,并且实现手动控制弹窗的关闭逻辑。

Antd Modal.confirm

一、代码演示

import { message, Modal } from 'antd'
import { forwardRef, useImperativeHandle } from 'react'
import { delQue } from '@/api/question.js'
import { useQuestionStore, QuestionGetters } from '@/store/question.js'

const Com = ({ getList }, ref) => {
  useImperativeHandle(ref, () => ({
    showModal,
  }))
  const [modal, contextHolder] = Modal.useModal()
  const { setColl, changeTime } = useQuestionStore()

  const submit = async ({ id, key }, e) => {
    try {
      let { code, msg, records } = await delQue({
        collId: id,
        resourceType: key,
      })
      if (code === 0) {
        message.success('删除成功')
        let coll = QuestionGetters('coll')
        if (`${id}` === coll.id + '') {
          setColl({
            type: coll.type,
            id: '',
          })
          changeTime({
            coll: Date.now(),
          })
        } else {
          getList()
        }
        /* 关键步骤 2 */
        await e()
      }
    } catch (e) {
      console.log(e)
    }
  }

  const showModal = async (data) => {
    let { collName } = data
    const confirmed = await modal.confirm({
      title: '确认删除问题集?',
      content: <div>此问题集中所有资源都将被删除,确认删除"{collName}"?</div>,
      onCancel() {
        console.log('cancled')
      },
      /* 关键步骤 1 */
      onOk(e) {
        submit(data, e)
      },
    })
    console.log('Confirmed: ', confirmed)
  }

  return <>{contextHolder}</>
}

export default forwardRef(Com)

二、代码解读

onOk 事件: 点击确定回调,参数为关闭函数,返回 promiseresolve 后自动关闭。这个参数很关键,我们可以通过这个参数来手动控制弹窗的关闭。

详见:
关键步骤 1:传出去的 onOk 事件,调用 submit 方法,传入 data 和 e,e 即为关闭函数,调用 e 即可关闭弹窗。
关键步骤 2:在 submit 方法中,根据接口请求结果,code===0 成功,则调用 e 即可关闭弹窗;否则不关闭弹窗。


欢迎访问:天问博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值