.App{font-family:sans-serif;margin-top:83px;padding-left:30px;padding-right:30px}.input-item{margin-top:2%}.input{width:50%;padding:5px;font-size:18px}.label{font-weight:900;font-size:20px}.container{display:flex;justify-content:center}.display-info{display:flex;justify-content:center}.food-form{background:#f2f2f2;border-radius:10px;padding:10px 20px 20px;margin-top:30px;margin-bottom:30px;width:600px}
Data trong ứng dụng React thường truyền đến component thông qua prop.Khi sử dụng prop thì data được truyền từ component cha đến component con.
Tuy nhiên, chúng ta có thể truyền data trong toàn bộ app mà không phải truyền prop qua từng tầng component khi sử dụng **React Context. **
Đặt vấn đề
Nếu không có React Context, chúng ta sẽ sử dụng kỹ thuật là “prop drilling” trong đó chúng ta sẽ phải truyền data xuống các component mặc dù một số component không cần dữ liệu đó.
Ví dụ :
Giả sử có data là một số có giá trị là 10 và chúng ta cần sử dụng data đó trong component Red và Green.
Sử dụng “prop drilling” sẽ cần gửi data từ component Red đến Blue sau đó mới gửi data đến Green được.
Vậy ở đây gửi data đến component Blue chỉ để truyền nó xuống cho Green.
Việc sử dụng “prop drilling” thì việc truyền dữ liệu đến các component con lồng nhau sâu sẽ rất cồng kềnh.
Do đó, React Context xuất hiện để khắc phục những nhược điểm của “prop drilling”.
React Context sẽ cho phép chúng ta có thể tạo data và truyền nó với một provider đến tất cả component trong ứng dụng React mà không cần dùng “prop drilling”.
Cách sử dụng React Context
Chúng ta sẽ học cách sử dụng React Context với một ví dụ rất đơn giản.
Ví dụ này chúng ta sẽ tạo dữ liệu Food chứa name và location trong context, truyền nó đến 2 components khác nhau và cập nhật giá trị dữ liệu từ 1 component khác.
Khởi tạo project react js
Run : npx create-react-app learn-useContext
Cấu trúc folder như sau:
1.Tạo Food Context
Trong FoodContext.jsx chúng ta sẽ khởi tạo một Context object sử dụng createContext API.