Skip to content

Modal 模态框

用于展示重要信息或需要用户确认的操作,会中断用户当前操作流程。

基础用法

tsx
import { useState } from 'react'
import { Modal, Button } from '@airo-ui/react'

function Demo() {
  const [visible, setVisible] = useState(false)

  return (
    <>
      <Button variant="primary" onClick={() => setVisible(true)}>
        打开对话框
      </Button>
      <Modal
        visible={visible}
        title="确认操作"
        onClose={() => setVisible(false)}
        onConfirm={() => {
          console.log('已确认')
          setVisible(false)
        }}
      >
        <p>确定要执行此操作吗?</p>
      </Modal>
    </>
  )
}

自定义按钮文本

tsx
import { Modal } from '@airo-ui/react'

<Modal
  visible={visible}
  title="删除确认"
  confirmText="删除"
  cancelText="取消"
  onClose={() => setVisible(false)}
  onConfirm={() => {
    // 确认删除
    setVisible(false)
  }}
>
  <p>此操作不可撤销,确定要删除吗?</p>
</Modal>

自定义宽度

tsx
import { Modal } from '@airo-ui/react'

<Modal
  visible={visible}
  title="宽对话框"
  width="600px"
  onClose={() => setVisible(false)}
>
  <p>内容区域</p>
</Modal>

点击遮罩关闭

tsx
import { Modal } from '@airo-ui/react'

<Modal
  visible={visible}
  title="提示"
  maskClosable
  onClose={() => setVisible(false)}
>
  <p>点击遮罩层可关闭</p>
</Modal>

自定义底部

tsx
import { Modal } from '@airo-ui/react'

<Modal
  visible={visible}
  title="自定义底部"
  footer={<button onClick={() => setVisible(false)}>我知道了</button>}
  onClose={() => setVisible(false)}
>
  <p>使用自定义底部内容</p>
</Modal>

API

Props

名称类型默认值说明
visiblebooleanfalse是否显示
titlestring标题
widthstring对话框宽度
closablebooleantrue是否显示关闭按钮
maskClosablebooleanfalse点击遮罩层是否关闭
destroyOnClosebooleanfalse关闭时是否销毁内容
confirmTextstring'确定'确认按钮文本
cancelTextstring'取消'取消按钮文本
confirmLoadingbooleanfalse确认按钮加载状态
footerReactNode自定义底部内容
childrenReactNode对话框内容
onOpen() => void打开时触发
onClose() => void关闭时触发
onConfirm() => void点击确认时触发
onCancel() => void点击取消时触发

MIT License