Unidirectional Data Flow (Luồng dữ liệu một chiều) trong React có nghĩa là:
- Dữ liệu luôn chảy theo một hướng duy nhất: Từ Component cha xuống Component con (thông qua
props). - Component con không bao giờ được phép thay đổi trực tiếp
propsmà nó nhận được.
Cách con cập nhật dữ liệu của cha:
Con muốn cập nhật dữ liệu thì phải gọi một callback function (hàm) do cha truyền xuống.
Ví dụ:
jsx
function Parent() {
const [text, setText] = useState("");
return <Child value={text} onUpdate={setText} />;
}
function Child({ value, onUpdate }) {
// Con gọi onUpdate để yêu cầu cha thay đổi state
return <input value={value} onChange={e => onUpdate(e.target.value)} />;
}Lợi ích:
- Dễ dự đoán & Dễ gỡ lỗi (Debug): Nhờ việc chỉ có một "nguồn sự thật" (Single Source of Truth) và luồng chảy rõ ràng, bạn dễ dàng trace (lần dấu) xem lỗi data xuất phát từ đâu.
- Khác với cơ chế Two-way data binding (Binding 2 chiều) của Angular 1 (nơi UI thay đổi data và data thay đổi UI tự động), luồng một chiều giúp tránh được các vòng lặp cập nhật vô tận (circular dependencies).