• Home
  • React
  • React Hook là gì? 6 Hook cơ bản trong React

React Hook là gì? 6 Hook cơ bản trong React

Khi React ra mắt tính năng hook từ phiên bản 16.8, nó đã thay đổi cách chúng ta quản lý state và xử lý logic trong các function component.

Trong bài viết này, mình sẽ giới thiệu các hook cơ bản trong React và hướng dẫn cách áp dụng chúng vào các ví dụ cụ thể.

1. useState

useState cho phép bạn thêm state vào function component. Thay vì phải dùng class để tạo state, giờ đây bạn có thể thực hiện chỉ với một dòng.

Cách hoạt động: useState trả về một mảng gồm hai phần tử: giá trị hiện tại của state và hàm để cập nhật nó.

				
					const [count, setCount] = useState(0);
				
			

Ví dụ thực tiễn: Tạo bộ đếm số lần nhấn nút.

				
					function Counter() {
  const [count, setCount] = useState(0);
  
  return (
    <div>
      <p>Bạn đã nhấn {count} lần</p>
      <button onClick={() => setCount(count + 1)}>Nhấn tôi</button>
    </div>
  );
}
				
			

Mỗi lần nhấn nút sẽ cập nhật giá trị count và tự động render lại giao diện.

2. useEffect

useEffect giúp xử lí các sideEffect như các hành động như gọi API, đăng ký sự kiện, hoặc thao tác với DOM khi component thay đổi hoặc render lần đầu.

Cách sử dụng: useEffect nhận vào hai tham số, với tham số thứ hai là danh sách các biến mà khi chúng thay đổi, hàm useEffect sẽ được gọi lại.

				
					useEffect(() => {
  // Code chạy khi component render hoặc dependencies thay đổi
}, [dependencies]);

				
			

Ví dụ: Lắng nghe sự thay đổi kích thước cửa sổ

				
					function WindowSize() {
  const [width, setWidth] = useState(window.innerWidth);
  
  useEffect(() => {
    const handleResize = () => setWidth(window.innerWidth);
    
    window.addEventListener('resize', handleResize);
    return () => window.removeEventListener('resize', handleResize);
  }, []);
  
  return <div>Chiều rộng cửa sổ hiện tại: {width}px</div>;
}

				
			

Với ví dụ này, mỗi khi kích thước cửa sổ thay đổi, giá trị width sẽ được cập nhật và giao diện sẽ tự động render lại.

3. useContext

useContext giúp lấy dữ liệu từ Context API mà không cần truyền qua từng component trung gian.

Cách dùng: Truy cập dữ liệu context bằng cách sử dụng hook useContext.

				
					const theme = useContext(ThemeContext);

				
			

Ví dụ: Hiển thị theme dựa trên context.

				
					function ThemedComponent() {
  const theme = useContext(ThemeContext);
  
  return <div style={{ backgroundColor: theme.background }}>Hello, World!</div>;
}

				
			

4. useRef

useRef tạo ra một tham chiếu có thể lưu giữ giá trị qua các lần render mà không làm thay đổi trạng thái của component.

Cách sử dụng: Thường dùng để thao tác với DOM hoặc lưu trữ thông tin không cần render lại

				
					const inputRef = useRef(null);

				
			

Ví dụ: Tự động focus vào ô input khi component được render.

				
					function FocusInput() {
  const inputRef = useRef(null);
  
  useEffect(() => {
    inputRef.current.focus();
  }, []);
  
  return <input ref={inputRef} />;
}

				
			

5. useMemo

useMemo giúp tối ưu hóa hiệu suất bằng cách ghi nhớ kết quả của một hàm tính toán tốn kém, chỉ tính toán lại khi giá trị phụ thuộc thay đổi.

				
					const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);

				
			

Ví dụ: Ghi nhớ kết quả của một phép tính nặng.

				
					const expensiveResult = useMemo(() => {
  return someHeavyCalculation(data);
}, [data]);

				
			

6. useCallback

useCallback hoạt động tương tự như useMemo, nhưng dành cho hàm. Nó ghi nhớ hàm và chỉ tạo lại khi dependencies thay đổi.

				
					const memoizedFunction = useCallback(() => {
  performAction(a, b);
}, [a, b]);

				
			

Ví dụ: Giảm thiểu render không cần thiết của các component con.

				
					const handleClick = useCallback(() => {
  console.log("Button clicked");
}, []);

return <Button onClick={handleClick}>Nhấn tôi</Button>;

				
			

Kết luận

Ở trên là 1 số chia sẻ về react hook của mình, vì đây đa phần là kiến thức mình tự học nên có thể bài viết này có thể có nhiều chỗ chưa chính xác và thiếu sót, mong mọi người góp ý ở dưới phần bình luận để bài viết thêm hoàn chỉnh và xây dựng một cộng đồng nơi mọi người có thể chia sẻ kinh nghiệm lập trình cho nhau 😘.

Bài viết liên quan

Công Nghệ Đám Mây: Giải Pháp Lưu Trữ Và Xử Lý Dữ Liệu Tối Ưu

Công Nghệ Đám Mây: Giải Pháp Lưu Trữ Và Xử Lý Dữ Liệu Tối Ưu Công nghệ đám…

ByByTrường SơnMar 19, 2025

Thực Tế Ảo (VR) và Thực Tế Tăng Cường (AR): Cánh Cửa Đến Thế Giới Mới

That’s a good title! It’s concise and accurately reflects the transformative potential of VR and AR. However, depending…

ByByTrường SơnMar 19, 2025

Lập Trình 4.0: Học Tập Và Thực Hành Để Thành Công

Lập Trình 4.0: Học Tập Và Thực Hành Để Thành Công Lập trình 4.0 không chỉ đơn thuần…

ByByTrường SơnMar 19, 2025

5 Công Nghệ Đột Phá Thay Đổi Cách Chúng Ta Sống

Năm công nghệ đột phá đang thay đổi cách chúng ta sống bao gồm: Trí tuệ nhân tạo…

ByByTrường SơnMar 19, 2025

Subscribe
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bình chọn nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận

0
Rất mong nhận được suy nghĩ của bạn, vui lòng bình luận.x
()
x
0869224813
Liên hệ