dialog 对话框
对话框组件是一种常见的用户界面组件,用于在应用程序中显示弹出窗口,以与用户进行交互或显示重要的信息。对话框通常用于提示用户关于操作确认、警告、错误信息、表单输入等。
Props参数
名称 | 类型 | 是否必传 | 默认值 | 描述 |
---|---|---|---|---|
visible | boolean | ✅ | - | 是否显示 |
title | ReactNode | 否 | - | 标题内容 |
content | ReactNode | 否 | - | 对话框内容 更建议直接使用children进行传递 |
closeable | boolean | 否 | false | 显示右上角关闭按钮,点击将触发 onCancel |
okText | ReactNode | 否 | - | 确定文本 |
okColor | string | 否 | - | 确定文字颜色 |
cancel | boolean | 否 | - | 是否显示取消 |
cancelText | ReactNode | 否 | - | 取消文本 |
cancelColor | string | 否 | - | 取消文本颜色 |
footer | ReactNode | false | 否 | - | 自定义底部 设为 false 时将不显示整个 footer 区域 |
okLoading | boolean | 否 | - | 点击ok时是否显示loading 与onOk配合使用。设置为true时。onOk可以返回为一个Promise函数。 在函数执行期间。确定按钮会显示为一个loading状态 |
示例
tsx
import { memo, useState } from 'react'
import { View } from '@tarojs/components'
import MMDialog from '~/components/dialog'
import MMButton from '~/components/button'
import PageDemoBlock from '../_components/page-demo-block'
import MMPageContainer from '../_components/page-container'
const Component = () => {
const [visible, setVisible] = useState(false)
const [cusVisible, setCusVisible] = useState(false)
const [asyVisible, setAsyVisible] = useState(false)
const [cancelisible, setCancelVisible] = useState(false)
const [customVisible, setCustomVisible] = useState(false)
return (
<MMPageContainer title="对话框">
<PageDemoBlock title="基础使用">
<MMButton onClick={() => setVisible(true)}>点击显示</MMButton>
<MMDialog visible={visible} title="确认加入团队?" onOk={() => setVisible(false)} onCancel={() => setVisible(false)} />
</PageDemoBlock>
<PageDemoBlock title="自定义">
<View>标题、按钮和按钮文本样式都可以修改</View>
<MMButton onClick={() => setCusVisible(true)}>点击显示</MMButton>
<MMDialog
visible={cusVisible}
title={
<View>
<View>一旦加入后不可解绑,</View>
<View>确认同意该团队邀请?</View>
</View>
}
okText="欣然接受"
okColor="#F18300"
cancelText="狠心拒绝"
cancelColor="red"
onOk={() => setCusVisible(false)}
onCancel={() => setCusVisible(false)}
/>
</PageDemoBlock>
<PageDemoBlock title="异步关闭">
<View>可以在点击确定时设置为异步处理</View>
<MMButton onClick={() => setAsyVisible(true)}>点击显示</MMButton>
<MMDialog
visible={asyVisible}
title="是否加入收藏"
okLoading
onOk={async () => {
await new Promise<void>((resolve) => {
setTimeout(() => {
resolve()
setAsyVisible(false)
}, 1000)
})
}}
onCancel={() => setAsyVisible(false)}
>
生命远不止连轴转和忙到极限,人类的体验远比这辽阔、丰富得多。
</MMDialog>
</PageDemoBlock>
<PageDemoBlock title="不显示取消">
<MMButton onClick={() => setCancelVisible(true)}>点击显示</MMButton>
<MMDialog
visible={cancelisible}
title="这个弹窗不显示取消"
cancel={false}
onOk={() => setCancelVisible(false)}
onCancel={() => setCancelVisible(false)}
/>
</PageDemoBlock>
<PageDemoBlock title="自定义底部">
<MMButton onClick={() => setCustomVisible(true)}>点击显示</MMButton>
<MMDialog
visible={customVisible}
title="这个弹窗不显示取消"
footer={
<MMButton block onClick={() => setCustomVisible(false)}>
点击确定
</MMButton>
}
/>
</PageDemoBlock>
</MMPageContainer>
)
}
const MMDialogPage = memo(Component)
export default MMDialogPage