跳到主要內容
+

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 的值。

按下 Enter 鍵開始編輯

堆疊對話框

對話框可以堆疊。一個對話框可以開啟另一個對話框,後者會在開啟時出現在前景。關閉後一個對話框會再次顯示前一個對話框。

按下 Enter 鍵開始編輯

系統對話框

Toolpad 提供了一組系統對話框,這些對話框改進了原生的 window.alertwindow.confirmwindow.prompt API。這些 API 非常相似,但它們創建的對話框會遵循您的應用程式主題。

Alert

類似於 window.alert,它會開啟一個對話框,向使用者顯示訊息。唯一要採取的動作是確認訊息,之後對話框會關閉。對話框標題和按鈕文字可以使用 titleokText 屬性自訂。

按下 Enter 鍵開始編輯

Confirm

類似於 window.confirm,它會開啟一個對話框,詢問使用者一個問題。使用者可以確認或取消,對話框結果是一個布林值,當使用者確認時為 true。對話框標題和按鈕文字可以使用 titleokTextcancelText 屬性自訂。

按下 Enter 鍵開始編輯

Prompt

類似於 window.prompt,它會開啟一個對話框,詢問使用者輸入文字。使用者可以填寫輸入框,並在確認後,由 prompt 呼叫返回的 Promise 將解析為其值。對話框標題和按鈕文字可以使用 titleokTextcancelText 屬性自訂。

按下 Enter 鍵開始編輯

進階範例

複雜 payload

payload 可以是一個物件,其中包含任何內容,包括 React 組件。這允許您將任意資料和組件傳遞到您的對話框。例如,在對話框內呈現具有位置相關欄位的表單

按下 Enter 鍵開始編輯

API

請參閱以下文件,以取得此處提及的組件所有可用屬性和類別的完整參考。