跳到主要內容
+

進度

進度指示器通常稱為旋轉器,表示未指定的等待時間或顯示流程的長度。

進度指示器通知使用者正在進行的流程狀態,例如載入應用程式、提交表單或儲存更新。

  • 確定性指示器顯示操作需要多長時間。
  • 非確定性指示器視覺化未指定的等待時間。

組件的動畫盡可能依賴 CSS,即使在 JavaScript 載入之前也能運作。

按下 Enter 開始編輯
按下 Enter 開始編輯
按下 Enter 開始編輯
按下 Enter 開始編輯
10%
按下 Enter 開始編輯
按下 Enter 開始編輯
按下 Enter 開始編輯
按下 Enter 開始編輯
按下 Enter 開始編輯

10%

按下 Enter 開始編輯

非標準範圍

進度組件接受 0 - 100 範圍內的值。這簡化了螢幕閱讀器使用者的操作,因為這些是預設的最小值/最大值。但是,有時您可能會使用值超出此範圍的資料來源。以下說明如何輕鬆地將任何範圍內的值轉換為 0 - 100 的比例

// MIN = Minimum expected value
// MAX = Maximum expected value
// Function to normalise the values (MIN / MAX could be integrated)
const normalise = (value) => ((value - MIN) * 100) / (MAX - MIN);

// Example component that utilizes the `normalise` function at the point of render.
function Progress(props) {
  return (
    <React.Fragment>
      <CircularProgress variant="determinate" value={normalise(props.value)} />
      <LinearProgress variant="determinate" value={normalise(props.value)} />
    </React.Fragment>
  );
}

自訂

以下是一些自訂組件的範例。您可以在覆寫文件頁面中了解更多相關資訊。


延遲顯示

關於回應時間,有3 個重要的限制需要了解。ButtonBase 組件的漣漪效應確保使用者感覺 UI 立即做出反應。通常,在延遲超過 0.1 秒但少於 1.0 秒的情況下,不需要特殊的回饋。在 1.0 秒後,您可以顯示載入器,以保持使用者思緒的連貫性。

限制

高 CPU 負載

在高負載下,您可能會遺失筆劃虛線動畫或看到隨機的 CircularProgress 環寬。您應該在 Web Worker 中或批次執行處理器密集型操作,以避免封鎖主渲染執行緒。

如果無法做到這一點,您可以利用 disableShrink 屬性來減輕此問題。請參閱此問題

按下 Enter 開始編輯

高頻率更新

LinearProgress 在 CSS transform 屬性上使用轉換,以在不同值之間提供平滑的更新。預設轉換持續時間為 200 毫秒。如果父組件太快更新 value 屬性,您至少會在重新渲染和進度列完全更新之間體驗到 200 毫秒的延遲。

如果您需要每秒執行 30 次或更多次重新渲染,我們建議停用轉換

.MuiLinearProgress-bar {
  transition: none;
}

API

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