用法
學習使用 MUI Base 組件的基本知識。
響應式 meta 標籤
MUI Base 是一個行動裝置優先的組件庫——我們先為行動裝置編寫程式碼,然後在必要時使用 CSS 媒體查詢來放大組件。
為了確保所有裝置都能正確渲染和觸控縮放,請將響應式 viewport meta 標籤添加到您的 <head>
元素中
<meta name="viewport" content="initial-scale=1, width=device-width" />
共用 props
Base 組件是獨立支援的,並且在隔離狀態下完全可以運作。
每個組件都有其獨特的 API,但所有非工具組件都接受以下共用 props
slots
slots
prop 是一個物件,可讓您覆寫基本組件本身的任何內部子組件——稱為 slots。
您可以使用 slots
prop,透過自訂組件或 HTML 元素來覆寫預設 slots。
例如,MUI Base Badge 組件預設渲染一個 <span>
。以下程式碼片段顯示如何透過將 <div>
指派給 root slot 來覆寫它
<Badge slots={{ root: 'div' }} />
slotProps
slotProps
prop 是一個物件,其中包含組件內所有 slots 的 props。您可以使用它來為組件的內部元素定義額外的自訂 props。
例如,以下程式碼片段顯示如何將自訂 CSS 類別新增至 MUI Base Badge 組件的 badge slot
<Badge slotProps={{ badge: { className: 'my-badge' } }} />
放置在主要組件上的所有額外 props 也會傳播到 root slot 中(就像它們被放置在 slotProps.root
中一樣)。
這兩個範例是等效的
<Badge id="badge1">
<Badge slotProps={{ root: { id: 'badge1' } }}>
最佳實務
如果您正在自訂一個組件,例如只有 root slot 的 Button,您可能會更喜歡使用更簡潔的 component
prop 而不是 slots
。
使用 component
覆寫可讓您將該元素的屬性直接應用於 root。例如,如果您將 Button root 替換為 <li>
標籤,您可以將 <li>
屬性 value
直接新增至組件。如果您對 slots.root
執行相同的操作,則需要將此屬性放在 slotProps.root
物件上,以避免 TypeScript 錯誤。
組件 vs. hooks
MUI Base 包含兩種建構區塊:組件和 hooks。
許多 MUI Base 組件都是在 React hooks 的幫助下實作的。在建構自訂組件時,您可以使用組件或 hooks——或兩者的組合。
一般來說,我們建議您從組件開始建構,如果您發現自己受到可用自訂選項的限制太多,那麼請考慮重構您的組件以改用對應的 hook。
每個選項都有其自身的權衡取捨
組件
優點
- 通常需要較少的程式碼來實作
- 預設配備無障礙功能
缺點
- 對於渲染 HTML 的結構控制較少
Hooks
優點
- 完全控制渲染 HTML 結構
缺點
- 通常需要更多程式碼來實作
- 需要額外步驟才能使產生的組件具有無障礙功能
有關 hooks 用法的詳細資訊,請參閱其對應的組件文件。