跳到主要內容
+

開關

開關是 UI 元素,讓使用者可以在兩種狀態之間做選擇——最常見的是開啟/關閉。

簡介

Switch 元件為使用者提供一個開關,用於在兩種互斥的狀態之間切換。

元件

import { Switch } from '@mui/base/Switch';

結構組成

Switch 元件由一個根 <span> 組成,其中包含三個內部 slot——一個軌道、一個拇指和一個輸入

<span class="base-Switch-root">
  <span class="base-Switch-track"></span>
  <span class="base-Switch-thumb"></span>
  <input type="checkbox" class="base-Switch-input" />
</span>

自訂結構

使用 slots 屬性來覆寫根 slot 或任何其他內部 slot

<Switch slots={{ root: 'div', track: 'div' }} />

使用 slotProps 屬性將自訂 props 傳遞到內部 slot。以下程式碼片段將一個名為 my-thumb 的 CSS 類別應用於拇指 slot

<Switch slotProps={{ thumb: { className: 'my-thumb' } }} />

與 TypeScript 一起使用

在 TypeScript 中,您可以將 slots.root 中使用的自訂元件類型指定為非樣式化元件的泛型參數。這樣,您可以安全地在元件上直接提供自訂根元件的 props

<Switch<typeof CustomComponent> slots={{ root: CustomComponent }} customProp />

同樣適用於特定於自訂原始元素的 props

<Switch<'input'> slots={{ root: 'input' }} autoFocus={true} />

Hook

import { useSwitch } from '@mui/base/useSwitch';

useSwitch hook 讓您可以將 Switch 的功能應用於完全自訂的元件。它會傳回要放置在自訂元件上的 props,以及代表元件內部狀態的欄位。

Hook *不*支援slot props,但它們支援自訂 props

基本範例

按下 Enter 開始編輯
按下 Enter 開始編輯

無障礙功能

為了使 Switch 元件具有無障礙功能,您應確保相應的標籤反映 Switch 的目前狀態。