Props: Truyền Dữ Liệu Giữa Các Components trong React

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 28 tháng 1, 2025

Trong React, các component hoạt động độc lập và có thể giao tiếp với nhau để tạo ra các ứng dụng phức tạp. Một trong những cách chính để truyền dữ liệu giữa các component là sử dụng props. Props (viết tắt của "properties") là một cơ chế trong React giúp một component truyền dữ liệu cho component con của nó.

Props Là Gì?

Props là một đối tượng chứa các giá trị được truyền từ component cha xuống component con. Các giá trị này có thể là bất kỳ thứ gì từ dữ liệu đơn giản như chuỗi, số, hay mảng, đến các hàm hoặc đối tượng phức tạp. Props giúp tái sử dụng các component và tạo ra các giao diện động bằng cách truyền các giá trị khác nhau vào các component con.

Cách Truyền Props

Để truyền props trong React, bạn chỉ cần thêm các thuộc tính vào trong JSX khi gọi component con. Sau đó, trong component con, bạn có thể truy cập các props này thông qua đối tượng props.

Ví Dụ: Truyền Props Từ Component Cha Đến Component Con

// Component Cha (ParentComponent)
import React from 'react';
import ChildComponent from './ChildComponent';
	
const ParentComponent = () => {
	  const message = "Chào bạn đến với React!";
	  return (
	    <div>
	      <h1>Component Cha</h1>
	      <ChildComponent text={message} />
	    </div>
	  );
};
	
export default ParentComponent;
// Component Con (ChildComponent)
import React from 'react';
	
const ChildComponent = (props) => {
	  return (
	    <div>
	      <h2>Component Con</h2>
	      <p>{props.text}</p>  {/* Truyền giá trị props.text từ ParentComponent */}
	    </div>
	  );
};
	
export default ChildComponent;

Trong ví dụ trên, component cha ParentComponent truyền một giá trị message dưới dạng props cho component con ChildComponent. Component con sau đó truy cập giá trị này thông qua props.text và hiển thị nó trong giao diện.

Đặc Điểm Của Props

  1. Props là bất biến (immutable): Sau khi được truyền vào component con, các props không thể bị thay đổi trực tiếp trong component con. Điều này giúp giữ cho dữ liệu không bị thay đổi một cách ngẫu nhiên và dễ dàng kiểm soát.
  2. Truyền theo chiều từ trên xuống dưới (top-down): Dữ liệu được truyền từ component cha xuống component con, giúp xây dựng các cấu trúc cây component rõ ràng và dễ quản lý.
  3. Có thể là bất kỳ kiểu dữ liệu nào: Props có thể là chuỗi, số, mảng, đối tượng, thậm chí là các hàm. Bạn có thể truyền bất kỳ loại dữ liệu nào cần thiết cho các component con.
  4. Truyền hàm qua props: Một trong những tính năng mạnh mẽ của props là khả năng truyền các hàm từ component cha xuống component con. Điều này cho phép component con có thể gọi các hàm của component cha, giúp việc xử lý các sự kiện hoặc cập nhật dữ liệu trở nên linh hoạt.

Truyền Hàm Qua Props

// Component Cha (ParentComponent)
import React, { useState } from 'react';
import ChildComponent from './ChildComponent';
	
const ParentComponent = () => {
	  const [count, setCount] = useState(0);
	
	  const increment = () => {
	    setCount(count + 1);
	  };
	
	  return (
	    <div>
	      <h1>Component Cha</h1>
	      <p>Số lượng: {count}</p>
	      <ChildComponent increment={increment} />
	    </div>
	  );
};
	
export default ParentComponent;
// Component Con (ChildComponent)
import React from 'react';
	
const ChildComponent = (props) => {
	  return (
	    <div>
	      <h2>Component Con</h2>
	      <button onClick={props.increment}>Tăng Số Lượng</button> {/* Gọi hàm từ props */}
	    </div>
	  );
};
	
export default ChildComponent;

Ở ví dụ trên, ParentComponent truyền một hàm increment xuống ChildComponent qua props. Khi người dùng nhấn nút trong ChildComponent, hàm increment được gọi và cập nhật giá trị count trong ParentComponent.

Các Loại Props

  1. Props chuẩn: Là các giá trị đơn giản được truyền trực tiếp từ component cha xuống component con, như chuỗi, số, hoặc mảng.
  2. Props là hàm: Như đã thấy ở ví dụ trên, bạn có thể truyền hàm từ component cha xuống con để cho phép component con có thể tương tác và thay đổi trạng thái của component cha.
  3. Props mặc định (default props): Bạn có thể thiết lập giá trị mặc định cho props nếu chúng không được truyền vào. Điều này giúp đảm bảo rằng các props luôn có giá trị hợp lệ.
const ChildComponent = (props) => {
	  return <p>{props.name}</p>;
};
	
ChildComponent.defaultProps = {
	  name: 'Người dùng không tên'
};

Kết Luận

Props là một cơ chế quan trọng trong React để truyền dữ liệu và tương tác giữa các component. Việc hiểu và sử dụng props đúng cách sẽ giúp bạn xây dựng các ứng dụng React hiệu quả và dễ dàng bảo trì. Props cho phép bạn truyền dữ liệu một cách rõ ràng và dễ kiểm soát từ component cha đến component con, đồng thời cũng tạo ra các component có thể tái sử dụng với các dữ liệu khác nhau.

Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ