{"id":21454392,"url":"https://github.com/fatahpratam/tutorial-mini-context","last_synced_at":"2026-04-14T10:32:52.342Z","repository":{"id":264130784,"uuid":"892455444","full_name":"fatahpratam/tutorial-mini-context","owner":"fatahpratam","description":"Created for documenting my progress for Hitesh's React YouTube tutorial. (Chapter 11) ","archived":false,"fork":false,"pushed_at":"2024-11-22T06:39:49.000Z","size":42,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-28T14:48:23.177Z","etag":null,"topics":["eslint","frontend","javascript","jsx","react","vite","web-app","web-development"],"latest_commit_sha":null,"homepage":"https://fatahpratam.github.io/tutorial-mini-context/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fatahpratam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-22T06:26:55.000Z","updated_at":"2024-11-22T07:06:54.000Z","dependencies_parsed_at":"2024-11-22T07:37:21.740Z","dependency_job_id":null,"html_url":"https://github.com/fatahpratam/tutorial-mini-context","commit_stats":null,"previous_names":["fatahpratam/tutorial-mini-context"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fatahpratam/tutorial-mini-context","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatahpratam%2Ftutorial-mini-context","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatahpratam%2Ftutorial-mini-context/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatahpratam%2Ftutorial-mini-context/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatahpratam%2Ftutorial-mini-context/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fatahpratam","download_url":"https://codeload.github.com/fatahpratam/tutorial-mini-context/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatahpratam%2Ftutorial-mini-context/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31793214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eslint","frontend","javascript","jsx","react","vite","web-app","web-development"],"created_at":"2024-11-23T05:07:18.524Z","updated_at":"2026-04-14T10:32:52.325Z","avatar_url":"https://github.com/fatahpratam.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chapter 11: Context API\n\n## GitHube Pages\nLink: [Mini Context](https://fatahpratam.github.io/tutorial-mini-context/)\n\n## Youtube Tutorial\n- Link: [Full Stack React Developer Course with Appwrite](https://www.youtube.com/watch?v=Bvwq_S0n2pk)\n- Creator: [HiteshCodeLab](https://www.youtube.com/@HiteshCodeLab)\n\n## Context API\n- Ketika suatu child component yang nested di dalam parent component membutuhkan data, maka child component memerlukan props yang diberikan oleh parent component.\n- Data flow ini pada umumnya tidak bermasalah, akan tetapi jika child component tersebut nested sedalam 3 level dan membutuhkan data dari component level 1, maka hal ini menciptakan aliran data yang berlebihan.\n- Solusi dari masalah ini adalah state management dengan menciptakan sebuah store yang dapat menyimpan data dan dapat diakses oleh semua component.\n- Menggunakan method Context API.\n\n## Alur kerja sederhana Context API\n- Memulai projek\n- Membuat aplikasi React sederhana dari template (CRA atau Vite)\n- Membuat sebuah `Context` (Nama lain dari store)\n- Menginformasikan semua component bahwa terdapat sebuah `Context` melalui Context Provider.\n- Menggunakan `Context` di dalam child component\n\n## Cara mengatur Context\n### Membuat Context\n- Buat folder context\n- Buat file UserContext.js untuk membuat `Context` untuk variabel `user`.\n- Di dalam file, panggil method `createContext()`, simpan hasil panggilan ke dalam variabel, dan export variabel tersebut.\n- Buat file UserContextProvider.jsx untuk membuat Context Provider untuk variabel `user`.\n- Di dalam file, buat sebuah fungsi `UserContextProvider` dengan parameter `{ children }`.\n- Di dalam fungsi tersebut, Buat state untuk variabel `user` dengan `setUser` sebagai fungsi pengubah state.\n- Import `UserContext` dari file UserContext.js sebelumnya.\n- Kembalikan JSX `UserContext.Provider` dengan argument untuk kunci `value` dengan object `{user, setUser}` dari state sebelumya.\n- Panggil variabel children di dalam JSX `UserContext.Provider`.\n- Terakhir, export fungsi `UserContextProvider`.\n\n### Menggunakan Context\n- Import `UserContextProvider` dan apit component yang akan menggunakan `Context` dengan JSX `UserContextProvider`.\n- Untuk mengakses atau mengubah variabel `user`, import `UserContext` dan panggil method `useContext` dengan `UserContext` sebagai argument-nya.\n\n## Fungsi Context\n- `createContext()`: Memungkinkan Anda membuat Konteks yang dapat disediakan atau dibaca oleh komponen\n- `useContext()`: Menerima objek konteks (nilai yang dikembalikan dari `React.createContext`) dan mengembalikan nilai konteks saat ini, seperti yang diberikan oleh penyedia konteks terdekat untuk konteks yang diberikan.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffatahpratam%2Ftutorial-mini-context","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffatahpratam%2Ftutorial-mini-context","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffatahpratam%2Ftutorial-mini-context/lists"}