Tạo một component Clock có chứa state là currentTime trong ReactJS
Trong bài tập này, mình sẽ tạo một component ReactJS có tên là Clock. Component này sẽ chứa một trạng thái currentTime
và hiển thị thời gian hiện tại. Đặc biệt, chúng ta sẽ cập nhật thời gian này mỗi giây bằng cách sử dụng lifecycle method setInterval.
Tạo một component Clock có chứa state là currentTime trong ReactJS
Bước 1: Tạo Component Clock
Mở file src/components/Clock.js
và thêm nội dung sau:
// src/components/Clock.js import React, { useState, useEffect } from 'react'; import './Clock.css'; const Clock = () => { // Sử dụng hook useState để tạo trạng thái currentTime, khởi tạo là thời gian hiện tại const [currentTime, setCurrentTime] = useState(new Date()); // useEffect sẽ được gọi mỗi khi component được render hoặc khi state thay đổi useEffect(() => { // setInterval để cập nhật currentTime mỗi giây const intervalId = setInterval(() => { setCurrentTime(new Date()); }, 1000); // Hủy bỏ interval khi component bị unmount return () => clearInterval(intervalId); }, []); // [] đảm bảo useEffect chỉ chạy sau lần render đầu tiên // Cấu trúc JSX để hiển thị component Clock return ( <div className="clock"> <p>Current Time: {currentTime.toLocaleTimeString()}</p> </div> ); }; export default Clock;
Giải thích:
useState Hook:
const [currentTime, setCurrentTime] = useState(new Date());
: Sử dụng hookuseState
để tạo trạng tháicurrentTime
, khởi tạo là thời gian hiện tại.
useEffect Hook:
useEffect(() => { /*...*/ }, []);:
Sử dụng hookuseEffect
để thực hiện các sideeffects
. Trong trường hợp này, nó được sử dụng để thiết lập mộtsetInterval
để cập nhậtcurrentTime
mỗi giây.
setInterval và clearInterval:
const intervalId = setInterval(() => { setCurrentTime(new Date()); }, 1000);
: Sử dụngsetInterval
để gọi hàm và cập nhậtcurrentTime
mỗi giây.return () => clearInterval(intervalId);
: TronguseEffect
,clearInterval
được sử dụng để hủy bỏinterval
khicomponent
bịunmount
để tránhmemory leak
.
Cấu trúc JSX:
<div className="clock">:
Một thẻ <div> với class là "clock" để tạo một vùng chứa cho các phần tử bên trong.<p>Current Time
:{currentTime.toLocaleTimeString()}</p>
: Hiển thị thời gian hiện tại dưới dạng văn bản, sử dụngtoLocaleTimeString
để định dạng thời gian theo địa phương người dùng.
Bước 2: Tạo File CSS
Tạo một file mới có tên là Clock.css
trong thư mục src/components
. Thêm các quy tắc CSS để tùy chỉnh giao diện của Clock:
/* src/components/Clock.css */ .clock { text-align: center; margin-top: 20px; padding: 20px; background-color: #f4f4f4; border-radius: 8px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } p { font-size: 24px; font-weight: bold; color: #333; }
Bước 3: Sử dụng Component trong App
Mở file src/App.js
và sửa nội dung như sau:
// src/App.js import React from 'react'; import Clock from './components/Clock'; import './App.css'; function App() { return ( <div className="App"> <header className="App-header"> <Clock /> </header> </div> ); } export default App;
Bước 4: Chạy ứng dụng
Mở terminal và chạy ứng dụng bằng lệnh:
npm start
Ứng dụng sẽ mở trên http://localhost:3000 và hiển thị component Clock
với thời gian hiện tại và được cập nhật mỗi giây.
Trong bài tập này, mình đã học cách sử dụng useState
và useEffect hooks
trong ReactJS để quản lý trạng thái và thực hiện các side effects
. Mình đã tạo thành công một component Clock
có chứa trạng thái currentTime
, hiển thị thời gian hiện tại và cập nhật nó mỗi giây bằng cách sử dụng lifecycle method setInterval.
Việc này giúp mình hiểu rõ hơn về cách quản lý trạng thái và lifecycle trong ReactJS, điều quan trọng trong việc phát triển ứng dụng ReactJS thực tế. Đồng thời, mình đã áp dụng CSS để tùy chỉnh giao diện của component.
Hy vọng rằng bài tập này đã giúp bạn nắm vững kiến thức và sẽ hỗ trợ bạn trong việc xây dựng các ứng dụng ReactJS của mình. Hãy tiếp tục học và phát triển kỹ năng lập trình ReactJS của bạn. Cảm ơn bạn đã tham gia và chúc bạn thành công!
Bài giải
-------------------- ######## --------------------
Câu hỏi thường gặp liên quan:
- Tạo một component Counter có chứa một state là count bằng ReactJS
- Tạo một component Clock có chứa state là currentTime trong ReactJS
- Tạo một component Toggle với một state là isOn trong ReactJS
- Tạo một component TodoList với state là một mảng todos trong ReactJS
- Tạo một component CountdownTimer với state trong ReactJS
- Tạo một component ColorPicker có chứa state trong ReactJS
- Tạo một component WeatherApp với state trong ReactJS
- Tạo một component QuizGame với state bằng ReactJS
- Tạo một component ImageCarousel với state bằng ReactJS
- Tạo một component ShoppingCart với state bằng ReactJS