版本 >= v0.6.0-alpha.0
可以直接调用。低版本需要手动在页面(page)里挂载一个 Dialog 组件并指定 id 为 dialog
。
function ImperativeDialog() {
return (
<>
{/* <Dialog id="dialog" /> */}
<Cell
title="提示弹窗"
clickable
bordered
isLink
onClick={() =>
Dialog.alert({ title: "标题", message: "代码是写出来给人看的,附带能在机器上运行" })
}
/>
</>
)
}
通过组件组合的方式调用 Dialog。
<Dialog
open
title="标题"
message="代码是写出来给人看的,附带能在机器上运行"
messageAlign="left"
confirm="ok"
cancel="cancel"
onConfirm={() => console.log("confirm")}
onCancel={() => console.log("cancel")}
/>
function TextDialog() {
const [open, setOpen] = useState(false)
return (
<>
<Cell title="提示弹窗" clickable bordered isLink onClick={() => setOpen(true)} />
<Dialog open={open} onClose={setOpen}>
<Dialog.Header>标题</Dialog.Header>
<Dialog.Content>代码是写出来给人看的,附带能在机器上运行</Dialog.Content>
<Dialog.Actions>
<Button onClick={() => setOpen(false)}>取消</Button>
<Button onClick={() => setOpen(false)}>确认</Button>
</Dialog.Actions>
</Dialog>
</>
)
}
用于提示一些消息,只包含一个确认按钮。
Dialog.alert("生命远不止连轴转和忙到极限,人类的体验远比这辽阔、丰富得多。")
function BasicDialog() {
const [open, setOpen] = useState(false)
return (
<>
<Cell title="提示弹窗" clickable bordered isLink onClick={() => setOpen(true)} />
<Dialog open={open} onClose={setOpen}>
<Dialog.Header>标题</Dialog.Header>
<Dialog.Content>代码是写出来给人看的,附带能在机器上运行</Dialog.Content>
<Dialog.Actions>
<Button onClick={() => setOpen(false)}>确认</Button>
</Dialog.Actions>
</Dialog>
</>
)
}
用于确认消息,包含取消和确认按钮。
Dialog.confirm({ title: "标题", message: "代码是写出来给人看的,附带能在机器上运行" })
function ConfirmDialog() {
const [open, setOpen] = useState(false)
return (
<>
<Cell title="确认弹窗" clickable bordered isLink onClick={() => setOpen(true)} />
<Dialog open={open} onClose={setOpen}>
<Dialog.Header>标题</Dialog.Header>
<Dialog.Content>代码是写出来给人看的,附带能在机器上运行</Dialog.Content>
<Dialog.Actions>
<Button onClick={() => setOpen(false)}>取消</Button>
<Button onClick={() => setOpen(false)}>确认</Button>
</Dialog.Actions>
</Dialog>
</>
)
}
设置 theme
为 rounded
可以展示圆角按钮风格的弹窗
Dialog.confirm({
theme: "rounded",
title: "标题",
message: "代码是写出来给人看的,附带能在机器上运行",
})
将 actions.variant
选项设置为 rounded
可以展示圆角按钮风格的弹窗。
function RoundedDialog() {
const [open, setOpen] = useState(false)
return (
<>
<Cell title="提示弹窗" clickable bordered isLink onClick={() => setOpen(true)} />
<Dialog open={open} onClose={setOpen}>
<Dialog.Header>标题</Dialog.Header>
<Dialog.Content>代码是写出来给人看的,附带能在机器上运行</Dialog.Content>
<Dialog.Actions variant="rounded">
<Button onClick={() => setOpen(false)}>取消</Button>
<Button onClick={() => setOpen(false)}>确认</Button>
</Dialog.Actions>
</Dialog>
</>
)
}
function AsyncCloseDialog() {
return (
<>
<Cell
title="异步关闭"
clickable
bordered
isLink
onClick={() =>
Dialog.confirm({
title: "标题",
message: "如果解决方法是丑陋的,那就肯定还有更好的解决方法,只是还没有发现而已。",
async onBeforeClose(action) {
return new Promise((resolve) => {
setTimeout(() => {
// action !== 'confirm' 拦截取消操作
resolve(action === "confirm")
}, 1000)
})
},
onCancel() {
console.log("cancel")
},
onConfirm() {
console.log("confirm")
},
})
}
/>
</>
)
}
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
defaultOpen | 默认是否显示弹窗 | boolean | - |
open | 是否显示弹窗 | boolean | - |
children | 组件内容 | ReactNode | - |
backdrop v0.6.0-alpha.0 | 遮罩层相关配置 | boolean | Omit<PopupBackdropProps, “open”> | - |
title v0.6.0-alpha.0 | 标题 | ReactNode | - |
message v0.6.0-alpha.0 | 文本内容,支持通过 \n 换行 | ReactNode | - |
messageAlign v0.6.0-alpha.0 | 内容对齐方式,可选值为 left right | string | center |
confirm v0.6.0-alpha.0 | 确认按钮 | string | ButtonProps | - |
cancel v0.6.0-alpha.0 | 取消按钮 | string | ButtonProps | - |
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
selector | 自定义节点选择器 | string | toast |
className | 自定义类名 | string | - |
style | 自定义样式 | CSSProperties | - |
title | 标题 | ReactNode | - |
message | 文本内容,支持通过 \n 换行 | ReactNode | - |
messageAlign | 内容对齐方式,可选值为 left right | string | center |
backdrop v0.6.0-alpha.0 | 遮罩层相关配置 | boolean | Omit<PopupBackdropProps, “open”> | - |
confirm | 确认按钮 | string | ButtonProps | - |
cancel | 取消按钮 | string | ButtonProps | - |
onConfirm | 确认事件 | () => void | - |
onCancel | 取消事件 | () => void | - |
方法名 | 参数 | 返回值 | 介绍 |
---|---|---|---|
Dialog.open | options | message | - | 展示弹窗 |
Dialog.alert | options | message | - | 展示消息提示弹窗 |
Dialog.confirm | options | message | - | 展示消息确认弹窗 |
组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件。
名称 | 默认值 | 描述 |
---|---|---|
—dialog-width | 320px * $hd | - |
—dialog-small-screen-width | 90% | - |
—dialog-font-size | var(—font-size-lg) | - |
—dialog-transition | var(—animation-duration-base) | - |
—dialog-border-radius | 16px * $hd | - |
—dialog-background-color | var(—white) | - |
—dialog-header-font-weight | var(—font-weight-bold) | - |
—dialog-header-line-height | 24px * $hd | - |
—dialog-header-padding-top | 26px * $hd | - |
—dialog-header-isolated-padding | var(—padding-lg) 0 | - |
—dialog-message-padding | 26px * $hd var(—padding-lg) | - |
—dialog-message-font-size | var(—font-size-md) | - |
—dialog-message-line-height | var(—line-height-md) | - |
—dialog-message-max-height | 60vh | - |
—dialog-has-title-message-color | var(—gray-7) | - |
—dialog-has-title-message-padding-top | var(—padding-xs) | - |
—dialog-button-height | 48px * $hd | - |
—dialog-confirm-button-color | var(—red) | - |
—dialog-footer-rounded-padding | var(—padding-xs) var(—padding-lg) var(—padding-md) | - |
—dialog-rounded-button-active-color | var(—white) | - |
—dialog-rounded-button-font-size | var(—font-size-md) | - |
—dialog-rounded-button-height | 36px * $hd | - |
—dialog-rounded-button-border-radius | var(—border-radius-max) | - |
—dialog-rounded-confirm-button-background-color | var(—gradient-red) | - |
—dialog-rounded-cancel-button-background-color | var(—gradient-orange) | - |