# React hook - useContext - P2

![tree-component.jpg](https://cdn.hashnode.com/res/hashnode/image/upload/v1625892686027/v0x5q29xK.jpeg)


- Ta có cấu trúc component như hình trên
- `useContext` giúp chúng ta gửi data từ `AppComponent` tới `ComponentC` mà không cần phải truyền qua component trung gian A và B
- Hướng dẫn gửi và nhận data qua `Provider` và `useContext`

## 1. AppComponent - component gửi data
- Tạo ra context và export ra, đặt tên là `AppContext`
- Gửi data muốn truyền qua `AppContext.Provider`

```
import ComponentA from './ComponentA'

export const AppContext = React.createContext()

export default function App() {
  const data = { name: 'kentrung', age: 69 }
  return (
    <AppContext.Provider value={data}>
      <ComponentA />
    </AppContext.Provider>
  )
}
```

## 2. ComponentC - component nhận data

- Import `AppContext` đã được tạo ở trên
- Nhận data qua `useContext(AppContext)`

```
import { useContext } from 'react'
import { AppContext } from '../App'

export default function ComponentA() {
  const data = useContext(AppContext)
  console.log(data)
  return (
    <ul>
      <li>Name: {data.name}</li>
      <li>Age: {data.age}</li>
    </ul>
  )
}
```

## 3. Demo
<iframe src="https://codesandbox.io/embed/react-hook-usecontext-p2-4d5lb?autoresize=1&fontsize=12&hidenavigation=1&theme=dark"
     style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;"
     title="React hook - useContext P2"
     allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"
     sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
   ></iframe>
