Skip to content

modal 弹窗

本弹窗是作为其他弹层类组件的基础封装,支持很多特性

Props参数

名称类型是否必传默认值描述
visibleboolean-是否显示
maskboolean-是否开启蒙层
animationTypeMMModalAnimationType-动画类型
maskClosableboolean-点击蒙层是否关闭
justifyContentMMModalJustifyContent-内容排列方式
classNamestring-样式表
onClose() => void-关闭回调

示例

tsx
import { useState } from 'react'
import MMButton from '~/components/button'
import { MMModalAnimationType, MMModalJustifyContent } from '~/components/modal/const'
import MMModal, { IMMModalProps } from '~/components/modal/index'
import MMPageContainer from '../_components/page-container'
import MMCard from '~/components/card'
import PageDemoBlock from '../_components/page-demo-block'

export default () => {
  const [visible, setVisible] = useState(false)
  const [props1, setProps1] = useState<Partial<IMMModalProps>>({
    maskClosable: true
  })
  const [visibleTransparent, setVisibleTransparent] = useState(false)
  const [visibleProps, setVisibleProps] = useState(false)

  return (
    <MMPageContainer title="弹窗">
      <PageDemoBlock title="使用">
        <MMButton onClick={() => setVisible(true)} text="基础弹窗" />
        <MMButton
          onClick={() => setProps1((pre) => ({ ...pre, maskClosable: !pre.maskClosable }))}
          text={props1.maskClosable ? '允许遮罩关闭' : '不允许遮罩关闭'}
        />
        <MMModal {...props1} visible={visible} onClose={() => setVisible(false)}>
          <MMCard onClick={() => setVisible(false)}>点我关闭</MMCard>
        </MMModal>
      </PageDemoBlock>

      <PageDemoBlock title="透明弹窗">
        <MMButton onClick={() => setVisibleTransparent(true)} text="透明弹窗" />
        <MMModal visible={visibleTransparent} mask={false}>
          <MMButton onClick={() => setVisibleTransparent(false)} text="关闭弹窗" />
        </MMModal>
      </PageDemoBlock>

      <PageDemoBlock title="透明弹窗">
        <MMButton onClick={() => setVisibleProps(true)} text="弹窗属性" />
        <MMModal visible={visibleProps} maskClosable animationType={MMModalAnimationType.down} justifyContent={MMModalJustifyContent.flexEnd}>
          <MMButton onClick={() => setVisibleProps(false)} text="关闭弹窗" />
        </MMModal>
      </PageDemoBlock>
    </MMPageContainer>
  )
}