REACTJS EXAMPLE
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Tạo một component CountdownTimer với state trong ReactJS

Trong bài tập này, mình sẽ tạo một component ReactJS có tên là CountdownTimer. Component này sẽ có một trạng thái countdown để theo dõi thời gian đếm ngược và một nút "Start" để bắt đầu đếm ngược. Khi người dùng nhấn vào nút "Start", đếm ngược sẽ bắt đầu và hiển thị thời gian còn lại. Sau khi đếm ngược đến 0, thông báo hoàn thành sẽ được hiển thị.

Tạo một component ReactJS có tên là CountdownTimer

Bước 1: Tạo Component CountdownTimer

Mở file src/components/CountdownTimer.js và thêm nội dung sau:

// src/components/CountdownTimer.js
import React, { useState, useEffect } from 'react';
import './CountdownTimer.css';

const CountdownTimer = () => {
  // Sử dụng hook useState để tạo trạng thái countdown, khởi tạo là một số nguyên dương
  const [countdown, setCountdown] = useState(10);
  // Sử dụng hook useState để tạo trạng thái isRunning, khởi tạo là false
  const [isRunning, setIsRunning] = useState(false);

  // Hàm xử lý sự kiện khi nhấn nút "Start"
  const handleStart = () => {
    // Bắt đầu đếm ngược chỉ khi không đang trong quá trình đếm ngược
    if (!isRunning) {
      setIsRunning(true);
      setCountdown(10); // Đặt lại thời gian đếm ngược về giá trị ban đầu
    }
  };

  // Hàm xử lý sự kiện khi đếm ngược hoàn thành
  const handleCompletion = () => {
    setIsRunning(false);
    alert('Countdown completed!');
  };

  // Sử dụng hook useEffect để theo dõi thay đổi trong trạng thái isRunning
  useEffect(() => {
    let timer;
    if (isRunning) {
      // Sử dụng setInterval để giảm thời gian đếm ngược mỗi giây
      timer = setInterval(() => {
        setCountdown((prevCountdown) => prevCountdown - 1);
      }, 1000);
    }

    // Kiểm tra và xử lý khi đếm ngược đến 0
    if (countdown === 0) {
      handleCompletion();
      clearInterval(timer); // Dừng đếm ngược
    }

    // Sử dụng hook useEffect để xử lý khi component unmount
    return () => clearInterval(timer);
  }, [isRunning, countdown]);

  // Cấu trúc JSX để hiển thị component CountdownTimer
  return (
    <div className="countdown-timer">
      <h2>Countdown Timer</h2>
      <div className="timer">
        <p>{countdown}</p>
      </div>
      <button onClick={handleStart} disabled={isRunning}>
        Start
      </button>
    </div>
  );
};

export default CountdownTimer;

Bước 2: Tạo File CSS

Tạo một file mới có tên là CountdownTimer.css trong thư mục src/components. Thêm các quy tắc CSS để tùy chỉnh giao diện của CountdownTimer:

/* src/components/CountdownTimer.css */

.countdown-timer {
  text-align: center;
  margin-top: 20px;
}

h2 {
  color: #333;
}

.timer {
  padding: 20px;
  border: 2px solid #ddd;
  margin-top: 20px;
  font-size: 24px;
  font-weight: bold;
}

button {
  padding: 10px 20px;
  font-size: 16px;
  cursor: pointer;
  background-color: #4caf50;
  color: #fff;
  border: none;
  border-radius: 5px;
  outline: none;
}

button:disabled {
  background-color: #aaa;
  cursor: not-allowed;
}

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 CountdownTimer from './components/CountdownTimer';
import './App.css';

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <CountdownTimer />
      </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 CountdownTimer với nút "Start" và hiển thị thời gian đếm ngược. Khi nhấn "Start", đếm ngược bắt đầu và hiển thị thông báo khi hoàn thành.

z5102030500302 5fbc96a5a8931aa757684b3f1afcc0b4 jpg

z5102032238092 24a99ec33b19173e54a4aead42e0905a jpg

Trong bài tập này, mình đã tạo thành công một component CountdownTimer để thực hiện thời gian đếm ngược. Sử dụng hook useState để quản lý trạng thái và hook useEffect để xử lý các tác vụ đặc biệt khi component mountunmount.

CSS được sử dụng để tạo giao diện thân thiện với người dùng, với một nút "Start" có màu sắc và hiển thị thời gian đếm ngược.

Hy vọng rằng bài tập này đã giúp bạn hiểu rõ hơn về cách sử dụng useState useEffect trong ReactJS để quản lý trạng thái và lifecycle của component. Hãy tiếp tục học và phát triển kỹ năng của bạn!

test php

Bài giải

-------------------- ######## --------------------

Câu hỏi thường gặp liên quan:

Cùng chuyên mục:

Bài tập ReactJS: Lists và Keys trong ReactJS

Bài tập ReactJS: Lists và Keys trong ReactJS

Bài tập ReactJS: Forms và Controlled Components trong ReactJS

Bài tập ReactJS: Forms và Controlled Components trong ReactJS

Bài tập ReactJS: Handling Events trong ReactJS

Bài tập ReactJS: Handling Events trong ReactJS

Bài tập ReactJS: Components và Props trong ReactJS

Bài tập ReactJS: Components và Props trong ReactJS

Thiết kế và quản lý form đơn giản với thư viện Formik

Thiết kế và quản lý form đơn giản với thư viện Formik

React Microservices, xây dựng ứng dụng React mạnh mẽ

React Microservices, xây dựng ứng dụng React mạnh mẽ

Xây dựng ứng dụng CRUD với Redux Toolkit cực dễ dàng

Xây dựng ứng dụng CRUD với Redux Toolkit cực dễ dàng

Áp dụng Testing vào React cho ứng dụng của bạn như thế nào?

Áp dụng Testing vào React cho ứng dụng của bạn như thế nào?

Performance Optimization trong React Js, tăng hiệu suất cực ngon

Performance Optimization trong React Js, tăng hiệu suất cực ngon

React Hook là gì? Tại sao React Hook quan trọng trong dự án?

React Hook là gì? Tại sao React Hook quan trọng trong dự án?

Hiểu Route React nâng cao trong 10 phút bằng ví dụ

Hiểu Route React nâng cao trong 10 phút bằng ví dụ

Xây dựng Hook trong React JS (React Custom Hook)

Xây dựng Hook trong React JS (React Custom Hook)

React Hooks là một tính năng mới trong React 16.8. Cho phép sử dụng state…

Tạo ứng dụng ghi chú với ReactJS và Redux

Tạo ứng dụng ghi chú với ReactJS và Redux

Trong bài viết này mình sẽ hướng dẫn xây dựng một ứng dụng ghi chú…

Cách đẩy ứng dụng ReactJS lên Heroku và Deploy trên đó

Cách đẩy ứng dụng ReactJS lên Heroku và Deploy trên đó

Cho bạn nào chưa bíết thì Heroku mà môt nền tảng đám mây hỗ trợ…

Tích hợp Redux vào ReactJS

Tích hợp Redux vào ReactJS

Trong bài viết này chúng ta sẽ cùng nhau đi tìm hiểu về cách tích…

Tạo máy tính đơn giản bằng ReactJS

Tạo máy tính đơn giản bằng ReactJS

Trong bài này ta sẽ xây dựng một ứng dụng máy tính đơn giản bằng…

Redux là gì? Tại sao lại ứng dụng trong ReactJS

Redux là gì? Tại sao lại ứng dụng trong ReactJS

Trong bài viết này chúng ta sẽ cùng nhau đi tìm hiểu về Redux trong…

useContext trong React Hook

useContext trong React Hook

Trong bài viết này chúng ta sẽ cùnuseContextg nhau đi tìm hiểu về useContext trong…

React Router cơ bản

React Router cơ bản

Có thể khẳng định rằng những trang SPA (single page application) hiện đang rất phổ…

useEffect trong React Hooks

useEffect trong React Hooks

Trong bài viết này chúng ta sẽ đi tìm hiểu về useEffect trong React Hooks.…

Top