useDialog

提供了一种命令式 APIs 来打开不同类型的对话框(提醒、确认、输入框)或者自定义对话框。

使用

安装 CustomProvider

您需要做的第一件事是在应用程序的根目录下安装 CustomProvider, 用于管理对话框的渲染容器。

import { CustomProvider } from 'rsuite';

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

使用 useDialog

import { useDialog } from 'rsuite';

function MyApp() {
  const dialog = useDialog();

  // 对话框
  dialog.alert('Hello, world!');

  // 确认对话框
  dialog.confirm('Are you sure?');

  // 输入对话框
  dialog.prompt('What is your name?');

  // 自定义对话框
  dialog.open(CustomDialog);
}

示例

提醒对话框

类似于 window.alert 它会打开一个对话框,向用户显示一条消息。

确认对话框

类似于 window.confirm 它会打开一个对话框,向用户提问。

输入对话框

类似于 window.prompt 它会打开一个对话框,询问用户输入一些文本。

带验证的输入对话框

您可以为输入对话框添加验证功能,以确保用户输入满足特定条件后才能继续操作。

自定义对话框

显示一个自定义对话框组件。

堆叠对话框

API

useDialog()

返回一个包含以下方法的对象:

属性 类型 描述
alert (message: ReactNode, options?: AlertOptions) => Promise<void> 显示提醒对话框
confirm (message: ReactNode, options?: ConfirmOptions) => Promise<boolean> 显示确认对话框
prompt (message: ReactNode, options?: PromptOptions) => Promise<string> 显示输入对话框
open (component: ComponentType, payload?: P, options?: OpenOptions) => Promise<T> 显示自定义对话框

类型定义

AlertOptions

interface AlertOptions {
  title?: string; // 对话框标题,默认值为 'Alert'
  okText?: string; // 确定按钮文本,默认值为 'OK'
  onClose?: () => void; // 对话框关闭时的回调函数
}

ConfirmOptions

interface ConfirmOptions {
  title?: string; // 对话框标题,默认值为 'Confirm'
  okText?: string; // 确定按钮文本,默认值为 'OK'
  cancelText?: string; // 取消按钮文本
  severity?: 'info' | 'success' | 'warning' | 'error'; // 对话框的视觉样式
  onClose?: (result: boolean) => void; // 对话框关闭时的回调函数
}

PromptOptions

interface PromptOptions {
  title?: string; // 对话框标题,默认值为 'Confirm'
  okText?: string; // 确定按钮文本,默认值为 'OK'
  cancelText?: string; // 取消按钮文本
  defaultValue?: string; // 输入框的默认值
  validate?: (value: string) => [isValid: boolean, errorMessage?: string]; // 验证函数
  onClose?: (result: string) => void; // 对话框关闭时的回调函数
}

OpenOptions

interface OpenOptions<T> {
  onClose?: (result?: T) => void; // 对话框关闭时的回调函数
}