One-way data binding trong React là một cơ chế mà dữ liệu (state hoặc props) chỉ được truyền theo một chiều, từ parent component (cha) đến child component (con). Đây là một đặc trưng quan trọng của React, giúp dễ dàng quản lý luồng dữ liệu trong ứng dụng. Bài viết hôm nay chúng ta cùng nhau tìm hiểu chi tiết hơn về khái niệm này nhé.
Data Binding là gì?
Data Binding (liên kết dữ liệu) là một kỹ thuật trong lập trình giao diện người dùng (UI), cho phép kết nối dữ liệu giữa logic ứng dụng (data/model) và giao diện người dùng (UI). Khi dữ liệu thay đổi, giao diện sẽ tự động được cập nhật và ngược lại, nếu cần thiết.

Data Binding có thể được chia thành 3 loại chính, dựa trên hướng luồng dữ liệu:
1. One-way Data Binding (Liên kết dữ liệu một chiều)
- Dữ liệu chỉ đi theo một chiều: từ logic ứng dụng (model) đến giao diện người dùng (UI).
- UI hiển thị dữ liệu từ model, nhưng thay đổi trong UI không ảnh hưởng đến model.
- Phổ biến trong React.
2. Two-way Data Binding (Liên kết dữ liệu hai chiều)
- Dữ liệu đi theo hai chiều: từ model đến UI và từ UI về model.
- Bất kỳ thay đổi nào trong dữ liệu (model) sẽ được cập nhật vào giao diện (UI) và ngược lại.
- Phổ biến trong Angular và Vue.js.
3. One-way Parent-to-Child Binding (Liên kết dữ liệu từ cha đến con)
- Một dạng của one-way data binding, trong đó dữ liệu được truyền từ component cha đến component con thông qua props.
- Component con chỉ nhận dữ liệu từ cha và không thể thay đổi trực tiếp dữ liệu đó.
- Phổ biến trong React và Vue.js.
One-way Data Binding là gì?
Chúng ta cùng xem xét ví dụ dưới đây:
import React, { useState } from 'react';
function ParentComponent() {
const [message, setMessage] = useState('Hello, React!');
return (
<div>
<ChildComponent message={message} />
<button onClick={() => setMessage('Data updated!')}>Update Message</button>
</div>
);
}
function ChildComponent({ message }) {
return <p>{message}</p>;
}
export default ParentComponent;
Trong React:
- Dữ liệu từ cha xuống con: Prop
messageđược truyền từParentComponentxuốngChildComponent.ChildComponentchỉ hiển thị dữ liệu và không thể thay đổi giá trị củamessage. - Cập nhật dữ liệu: Khi người dùng nhấn nút Update Message, state
messagetrongParentComponentđược thay đổi thông quasetMessage. Điều này làm React re-render lạiParentComponent, vàmessagemới được truyền xuốngChildComponent.
Lợi ích của One-way Data Binding
Cơ chế truyền dữ liệu theo một chiều trong React có nhiều ưu điểm như sau:
- Dễ dàng kiểm soát luồng dữ liệu: Vì dữ liệu chỉ di chuyển từ cha đến con, bạn luôn biết nguồn gốc của dữ liệu và nơi nó đang được sử dụng.
- Dễ debug: Khi có lỗi hoặc vấn đề xảy ra, bạn chỉ cần kiểm tra component quản lý dữ liệu để xác định nguyên nhân.
- Đồng bộ hóa tốt hơn: Với cơ chế này, mọi thay đổi trong dữ liệu được quản lý tập trung, đảm bảo sự đồng bộ giữa giao diện và logic.
So sánh One-way với Two-way

| Tiêu chí | One-way Data Binding (React) | Two-way Data Binding (Angular/Vue.js) |
| Luồng dữ liệu | Dữ liệu chỉ đi từ cha đến con. | Dữ liệu có thể thay đổi từ cả hai phía (cha và con). |
| Cập nhật dữ liệu | Cần sử dụng state và các callback để cập nhật. | Thay đổi dữ liệu trong giao diện (UI) tự động cập nhật logic. |
| Kiểm soát | Kiểm soát tốt hơn, dễ dàng debug. | Có thể khó kiểm soát trong các ứng dụng phức tạp. |
| Hiệu suất | Tối ưu hóa tốt hơn khi cập nhật giao diện. | Có thể tốn tài nguyên hơn khi theo dõi nhiều thay đổi. |
Kết bài
One-way data binding trong React giúp quản lý luồng dữ liệu rõ ràng và dễ dự đoán. Dữ liệu luôn được truyền từ trên xuống dưới (parent → child), đảm bảo tính ổn định và kiểm soát tốt trong ứng dụng. Khi cần cập nhật dữ liệu, bạn thay đổi state hoặc dùng callback function để truyền hành động từ con lên cha. Cơ chế này là một trong những lý do React được ưa chuộng trong các ứng dụng lớn và phức tạp!
One-way data binding trong React là một cơ chế mà dữ liệu (state hoặc props) chỉ được truyền theo một chiều, từ parent component (cha) đến child component (con). Đây là một đặc trưng quan trọng của React, giúp dễ dàng quản lý luồng dữ liệu trong ứng dụng. Bài viết hôm nay chúng ta cùng nhau tìm hiểu chi tiết hơn về khái niệm này nhé.