跳到主要內容
+

useDialogs API

useDialogs hook 的 API 參考資料。

Import

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

閱讀此指南,瞭解差異,關於最小化 bundle size。

Usage

透過調用 hook 來存取 dialogs API。

const dialogs = useDialogs();

Reference

dialogs.alert

開啟警示對話框,返回一個 Promise,在使用者關閉對話框時解析。

await dialogs.alert('Something went wrong', {
  title: 'Attention!',
});

簽章

function alert(message, options?)

參數

  • message: React.ReactNode 要在警示對話框中顯示的訊息。
  • options?: object 警示對話框的額外配置。
    • onClose?: () => Promise<void> 在關閉對話框之前呼叫的函式。只要返回的 Promise 尚未解析,對話框就會保持開啟狀態。如果您想在關閉時執行非同步操作並顯示載入狀態,請使用此選項。
    • title?: React.ReactNode 對話框的標題。預設為 'Alert'
    • okText?: React.ReactNode 在「確定」按鈕中顯示的文字。預設為 'Ok'

返回

Promise<void> 一個 Promise,在使用者關閉對話框後解析。

dialogs.confirm

開啟確認對話框。返回一個 Promise,如果使用者確認則解析為 true,如果使用者取消則解析為 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 尚未解析,對話框就會保持開啟狀態。如果您想在關閉時執行非同步操作並顯示載入狀態,請使用此選項。
    • title?: React.ReactNode 對話框的標題。預設為 'Confirm'
    • okText?: React.ReactNode 在「確定」按鈕中顯示的文字。預設為 'Ok'
    • severity?: 'error' | 'info' | 'success' | 'warning' 表示對話框的用途。這會影響「確定」按鈕的顏色。預設為 undefined
    • cancelText?: React.ReactNode 在「取消」按鈕中顯示的文字。預設為 'Cancel'

返回

Promise<boolean> 一個 Promise,如果使用者確認則解析為 true,如果使用者取消則解析為 false。

dialogs.prompt

開啟提示對話框以請求使用者輸入。返回一個 Promise,如果使用者確認則解析為輸入值,如果使用者取消則解析為 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 尚未解析,對話框就會保持開啟狀態。如果您想在關閉時執行非同步操作並顯示載入狀態,請使用此選項。
    • title?: React.ReactNode 對話框的標題。預設為 'Prompt'
    • okText?: React.ReactNode 在「確定」按鈕中顯示的文字。預設為 'Ok'
    • cancelText?: React.ReactNode 在「取消」按鈕中顯示的文字。預設為 'Cancel'

返回

Promise<string> 一個 Promise,如果使用者確認則解析為使用者輸入值,如果使用者取消則解析為 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 尚未解析,對話框就會保持開啟狀態。如果您想在關閉時執行非同步操作並顯示載入狀態,請使用此選項。

返回

Promise<R> 一個 Promise,在對話框關閉時解析為對話框的結果。

dialogs.close

以程式方式關閉先前使用 dialogs.open 開啟的對話框。如果對話框返回結果,則 close 也必須使用結果呼叫。原始對話框 Promise 將會使用此結果解析。此 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,在對話框完全關閉時解析為對話框結果。