付費限定React STOPWATCH專案製作
付費限定

React STOPWATCH專案製作

更新於 發佈於 閱讀時間約 16 分鐘

以一般邏輯來寫

import React, { useState, useEffect, useRef } from 'react';

const Stopwatch = () => {
const [time, setTime] = useState(0); // 當前時間(以秒為單位)
const [isRunning, setIsRunning] = useState(false); // 計時器是否正在運行

const intervalRef = useRef(null); // 用於保存計時器的 ID

useEffect(() => {
if (isRunning) {
// 如果計時器正在運行,則每 10 毫秒更新一次時間
intervalRef.current = setInterval(() => {
setTime((prevTime) => prevTime + 0.01);
}, 10);
}

// 在組件卸載時或isRunning改變時清除計時器,避免記憶體洩漏、避免意外行為
return () => clearInterval(intervalRef.current);
}, [isRunning]); // 依賴 isRunning 狀態

const start = () => {
setIsRunning(true);
};

const pause = () => {
setIsRunning(false);
};

const reset = () => {
setIsRunning(false);
setTime(0);
};

// 格式化時間,將秒轉換為分鐘、秒和毫秒
const formatTime = (time) => {
const minutes = Math.floor(time / 60);
const seconds = Math.floor(time % 60);
const milliseconds = Math.floor((time % 1) * 100);

return `${minutes.toString().padStart(2, '0')}:${seconds
.toString()
.padStart(2, '0')}.${milliseconds.toString().padStart(2, '0')}`;
};

return (
<div>
<h1>Stopwatch</h1>
<div>
{/* 顯示格式化後的時間 */}
<p>{formatTime(time)}</p>
</div>
<div>
{/* 根據計時器狀態顯示開始或暫停按鈕 */}
{!isRunning ? (
<button onClick={start}>Start</button>
) : (
<button onClick={pause}>Pause</button>
)}
{/* 重置按鈕 */}
<button onClick={reset}>Reset</button>
</div>
</div>
);
};

export default Stopwatch;
以行動支持創作者!付費即可解鎖
本篇內容共 6575 字、0 則留言,僅發佈於前端網頁程式設計入門你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
avatar-img
電資鼠 - 您的學習好夥伴
8會員
200內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
留言
avatar-img
留言分享你的想法!
在 React 中,狀態管理是構建複雜應用的重要一環,其中 useContext 與 Redux 都提供了解決方案,但它們各有優缺點和適用場景。 有鑑於Redux以英文教學為主,網上中文的教學不多,初學者會遇到一些困難,所以本章節希望以一篇文章帶領你快速入門Redux,透過實作的方式上手這個技能!
在 React 中,useContext() 是一個 Hook,用來讓你在函式元件中輕鬆地存取 context 資料,避免繁瑣的 props 傳遞。以下是一步步的教學與示例程式碼。 透過本章學習,你將掌握 如何在 React 應用中運用 useContext() 管理全域狀態,提升開發效率!
透過本章學習,你將掌握 useRef() 的核心概念與最佳應用方式,提高 React 應用的效能與靈活性!
在 React 中,狀態管理是構建複雜應用的重要一環,其中 useContext 與 Redux 都提供了解決方案,但它們各有優缺點和適用場景。 有鑑於Redux以英文教學為主,網上中文的教學不多,初學者會遇到一些困難,所以本章節希望以一篇文章帶領你快速入門Redux,透過實作的方式上手這個技能!
在 React 中,useContext() 是一個 Hook,用來讓你在函式元件中輕鬆地存取 context 資料,避免繁瑣的 props 傳遞。以下是一步步的教學與示例程式碼。 透過本章學習,你將掌握 如何在 React 應用中運用 useContext() 管理全域狀態,提升開發效率!
透過本章學習,你將掌握 useRef() 的核心概念與最佳應用方式,提高 React 應用的效能與靈活性!