跳到内容
+

useDialogs

用于打开和与对话框交互的命令式 API。

Toolpad Core 提供了一组抽象,使与对话框的交互更加简单。它具有用于打开和关闭对话框的命令式 API,并允许对话框彼此堆叠。

您需要做的第一件事是在应用程序的根目录安装 DialogsProvider。

import { DialogsProvider } from '@toolpad/core/useDialogs';

function App({ children }) {
  return <DialogsProvider>{children}</DialogsProvider>;
}

要访问对话框 API,您首先必须调用 useDialogs hook。

import { useDialogs } from '@toolpad/core/useDialogs';

function MyApp() {
  const dialogs = useDialogs();
  // ...
}

基本对话框

对话框是 React 组件,它接受 openonClose 属性并返回一个 Dialog 组件。open 属性反映对话框的打开状态,您可以调用 onClose 处理程序来关闭它。

function MyCustomDialog({ open, onClose }: DialogProps) {
  return (
    <Dialog fullWidth open={open} onClose={() => onClose()}>
      <DialogTitle>Custom dialog</DialogTitle>
      <DialogContent>I am a custom dialog</DialogContent>
      <DialogActions>
        <Button onClick={() => onClose()}>Close me</Button>
      </DialogActions>
    </Dialog>
  );
}

现在您可以调用 dialogs.open 函数并将组件作为第一个参数传递。

Enter 开始编辑

使用对话框 payload

您可以使用第二个参数将 payload 传递给对话框。payload 在对话框的生命周期内保持不变。

Enter 开始编辑

使用对话框结果

对话框可以使用 onClose 处理程序返回值。open 方法返回的 Promise 将使用传递给 onClose 的值来 resolve。

Enter 开始编辑

堆叠对话框

对话框可以堆叠。一个对话框可以打开另一个对话框,后者在打开时会出现在前台。关闭后者会再次显示前者。

Enter 开始编辑

系统对话框

Toolpad 附带一组系统对话框,这些对话框改进了原生 window.alertwindow.confirmwindow.prompt API。这些 API 非常相似,但它们创建的对话框遵循您的应用程序主题。

提示框

类似于 window.alert,它打开一个对话框,其中包含给用户的消息。唯一要采取的操作是确认消息,之后对话框关闭。对话框标题和按钮文本可以使用 titleokText 属性进行自定义。

Enter 开始编辑

确认框

类似于 window.confirm,它打开一个对话框,其中包含给用户的问题。用户可以选择确认或取消,对话框结果是一个布尔值,当用户确认时为 true。对话框标题和按钮文本可以使用 titleokTextcancelText 属性进行自定义。

Enter 开始编辑

提示输入框

类似于 window.prompt,它打开一个对话框,询问用户一些输入文本。用户可以填写输入框,并在确认后,从 prompt 调用返回的 Promise 将使用其值进行 resolve。对话框标题和按钮文本可以使用 titleokTextcancelText 属性进行自定义。

Enter 开始编辑

高级示例

复杂 payload

payload 可以是一个对象,其中包含任何内容 - 包括 React 组件。这允许您将任意数据和组件传递给对话框。例如,在对话框内渲染一个带有位置相关字段的表单

Enter 开始编辑

API

有关此处提及的组件可用的所有 props 和 classes 的完整参考,请参阅下面的文档。