useDialogs API
useDialogs hook 的 API 参考。
导入
import useDialogs from '@toolpad/core/useDialogs';
// or
import { useDialogs } from '@toolpad/core';
通过阅读这篇指南,了解有关最小化 bundle size 的区别。
用法
通过调用 hook 来访问 dialogs API。
const dialogs = useDialogs();
参考
dialogs.alert
打开一个警告对话框,返回一个 promise,当用户关闭对话框时 resolve。
await dialogs.alert('Something went wrong', {
title: 'Attention!',
});
签名
function alert(message, options?)
参数
message:React.ReactNode要在警告对话框中显示的消息。options?:object警告对话框的额外配置。onClose?:() => Promise<void>在对话框关闭之前调用的函数。只要返回的 promise 未 resolve,对话框就会保持打开状态。如果您想在关闭时执行异步操作并显示加载状态,请使用此选项。title?:React.ReactNode对话框的标题。默认为'Alert'。okText?:React.ReactNode在“确定”按钮中显示的文本。默认为'Ok'。
返回值
Promise<void> 一个 promise,一旦用户关闭对话框,该 promise 就会 resolve。
dialogs.confirm
打开一个确认对话框。返回一个 promise,如果用户确认,则 resolve 为 true,如果用户取消,则 resolve 为 false。
const confirmed = await dialogs.confirm('Are you sure?', {
okText: 'Yes',
cancelText: 'No',
});
签名
function confirm(message, options?)
参数
message:React.ReactNode要在确认对话框中显示的消息。options?:object确认对话框的额外配置。onClose?:(result: boolean) => Promise<void>在对话框关闭之前调用的函数。只要返回的 promise 未 resolve,对话框就会保持打开状态。如果您想在关闭时执行异步操作并显示加载状态,请使用此选项。title?:React.ReactNode对话框的标题。默认为'Confirm'。okText?:React.ReactNode在“确定”按钮中显示的文本。默认为'Ok'。severity?:'error' | 'info' | 'success' | 'warning'表示对话框的用途。这将影响“确定”按钮的颜色。默认为undefined。cancelText?:React.ReactNode在“取消”按钮中显示的文本。默认为'Cancel'。
返回值
Promise<boolean> 一个 promise,如果用户确认,则 resolve 为 true,如果用户取消,则 resolve 为 false。
dialogs.prompt
打开一个提示对话框以请求用户输入。返回一个 promise,如果用户确认,则 resolve 为输入,如果用户取消,则 resolve 为 null。
const input = await dialogs.prompt('What is your name?', {
cancelText: 'Leave me alone',
});
签名
function prompt(message, options?)
参数
message:React.ReactNode要在提示对话框中显示的消息。options?:object提示对话框的额外配置。onClose?:(result: string) => Promise<void>在对话框关闭之前调用的函数。只要返回的 promise 未 resolve,对话框就会保持打开状态。如果您想在关闭时执行异步操作并显示加载状态,请使用此选项。title?:React.ReactNode对话框的标题。默认为'Prompt'。okText?:React.ReactNode在“确定”按钮中显示的文本。默认为'Ok'。cancelText?:React.ReactNode在“取消”按钮中显示的文本。默认为'Cancel'。
返回值
Promise<string> 一个 promise,如果用户确认,则 resolve 为用户输入,如果用户取消,则 resolve 为 null。
dialogs.open
打开一个自定义对话框。该对话框是一个 React 组件,可以选择接受 payload,并可以选择在其 onClose 属性中返回结果。
function MyDialog({ open, onClose, payload }) {
// ...
}
const result = await dialogs.open(MyDialog, 123, {
onClose: async (result) => callApi(result),
});
签名
function open(component, payload, options?)
参数
component:React.ComponentType<{ open: boolean, onClose: (result: R) => Promise<void>, payload: P }>要显示的对话框组件。payload?:P传递给对话框的可选 payload。如果您想参数化对话框或使用实例特定数据,这将很有用。此值将在对话框的生命周期内保持不变。options?:object对话框的额外配置。onClose?:(result: R) => Promise<void>在对话框关闭之前调用的函数。只要返回的 promise 未 resolve,对话框就会保持打开状态。如果您想在关闭时执行异步操作并显示加载状态,请使用此选项。
返回值
Promise<R> 一个 promise,如果用户确认,则 resolve 为用户输入,如果用户取消,则 resolve 为 null。
dialogs.close
以编程方式关闭先前使用 dialogs.open 打开的对话框。如果对话框返回结果,则 close 也必须使用结果调用。原始对话框 promise 将使用此结果 resolve。此 promise 也从 close 函数返回。
const myDialog = dialogs.open(/* ... */);
// ...
const result = await dialogs.close(myDialog, 123);
签名
function close(dialog, result)
参数
dialog:Promise<R>要关闭的对话框。这应该是由dialogs.open先前返回的 promise。result?:R从对话框返回的结果。
返回值
Promise<R> 一个 promise,当对话框完全关闭时,该 promise 使用对话框结果 resolve。