Custom Hook: Bikin Sendiri Hook-mu Biar Kode Lebih Rapi & Reusable
Udah capek copy-paste logika yang sama ke banyak komponen? Saatnya kamu kenalan sama custom hook React — senjata rahasia developer senior buat kode yang lebih bersih dan reusable.
Pernah nggak kamu nulis logika useState + useEffect untuk fetch data, terus kamu nulis hal yang sama persis di komponen lain? Rasanya kayak déjà vu yang menyebalkan — copy, paste, ganti nama variabel, selesai. Padahal ada cara yang jauh lebih elegan: custom hook React reusable logic. Dengan custom hook, logika yang sering kamu pakai bisa dikemas jadi satu fungsi yang bisa dipanggil di mana saja. Artikel ini adalah bagian dari Seri Belajar React: React From Zero to Zorro, dan di sini kamu akan belajar cara membuat custom hook dari nol sampai siap dipakai di proyek nyata.
Apa Itu Custom Hook dan Kenapa Kamu Butuh custom hook React?
Bayangkan kamu punya pisau Swiss Army — satu alat yang punya banyak fungsi. Custom hook itu persis kayak gitu: satu fungsi yang membungkus logika React (state, effect, ref, dll.) supaya bisa dipakai ulang di banyak komponen tanpa harus ditulis berulang.
Secara teknis, custom hook adalah fungsi JavaScript biasa yang namanya diawali dengan kata use — misalnya useFetch, useWindowSize, atau useLocalStorage. Di dalamnya, kamu bebas pakai hook bawaan React seperti useState dan useEffect.
⚙️
📐 Definisi Kunci
Custom Hook adalah fungsi JavaScript yang diawali use, berisi logika stateful React, dan dapat digunakan kembali di berbagai komponen tanpa mengulang kode. Ini adalah implementasi prinsip DRY (Don't Repeat Yourself) yang paling elegan di ekosistem React.
🔥
Fakta Menarik
Library React populer seperti react-use dan ahooks sepenuhnya dibuat dari custom hook. Artinya, skill yang kamu pelajari hari ini adalah fondasi dari ribuan library open-source di luar sana!
Cara Membuat Custom Hook React Reusable Logic dari Nol
Oke, teori cukup. Sekarang kita langsung hands-on. Kita akan bikin dua custom hook yang sering banget dibutuhkan di proyek nyata: useFetch untuk fetching data, dan useLocalStorage untuk menyimpan data ke browser storage. Ikuti langkah-langkahnya!
1
Identifikasi logika yang berulang
Perhatikan komponen-komponen di proyekmu. Kalau kamu melihat pola yang sama muncul lebih dari sekali, itu sinyal kuat bahwa saatnya bikin custom hook. Contohnya: logika fetch API yang muncul di UserList, ProductList, dan OrderList.
2
Buat file baru dengan nama diawali use
Konvensinya, simpan custom hook di folder src/hooks/. Buat file bernama useFetch.js.
3
Tulis logika hook-mu
Pindahkan logika berulang tadi ke dalam fungsi custom hook. Berikut implementasi useFetch yang siap pakai:
Awali nama custom hook dengan use bukan hanya konvensi, tapi aturan wajib. React menggunakan prefix ini untuk menjamin aturan hooks dipatuhi (misalnya, tidak dipanggil di luar komponen atau hook lain).
Satu lagi contoh custom hook yang sangat berguna di kehidupan nyata — menyimpan dan membaca data dari localStorage. Tanpa custom hook, kamu harus tulis JSON.parse dan JSON.stringify terus-terusan. Ngebosenin? Banget. Sekarang kita bungkus jadi hook sekali, pakai selamanya.
Custom hook tidak berbagi state antar komponen yang menggunakannya. Setiap komponen yang memanggil useFetch mendapatkan state-nya sendiri yang independen. Ini beda dengan Context API atau state management global.
Aturan Emas dan Best Practice Custom Hook React
🔍 Perbandingan: Dengan vs Tanpa Custom Hook
❌ Tanpa Custom Hook
Logika duplikat di banyak komponen
Susah di-test secara terpisah
Kode sulit dibaca & maintain
Bug harus diperbaiki di banyak tempat
✅ Dengan Custom Hook
Satu definisi, dipakai di mana saja
Mudah di-unit test secara terisolasi
Komponen jadi fokus ke tampilan saja
Bug cukup diperbaiki di satu tempat
Custom Hook
Kegunaan
Kompleksitas
useFetch
Fetching data dari API
Mudah
useLocalStorage
State yang persist di browser
Mudah
useWindowSize
Deteksi ukuran layar real-time
Menengah
useDebounce
Delay eksekusi (misal: search)
Menengah
useAuth
Manajemen sesi autentikasi
Lanjutan
⚠️
Perhatian!
Custom hook tetap harus mengikuti Rules of Hooks: hanya boleh dipanggil di level teratas fungsi komponen atau hook lain — jangan dipanggil di dalam kondisi (if), loop (for), atau nested function.
💡
Tips: Struktur Folder yang Rapi
Simpan semua custom hook di src/hooks/ dan ekspor dari satu file index.js supaya impor lebih bersih:
import { useFetch, useLocalStorage } from '../hooks';
📚
Bagian dari
Seri Belajar React: React From Zero to Zorro
Artikel ini adalah bagian ke-12 dari 16 artikel dalam seri lengkap belajar React dari nol. Akses daftar isi lengkap dan semua artikel di sini:
Hari ini kamu sudah belajar bahwa custom hook React reusable logic bukan sekadar fitur keren — ini adalah cara berpikir yang akan mengubah cara kamu menulis React selamanya. Rangkuman poin utamanya:
Custom hook adalah fungsi JS biasa berawalan use yang bungkus logika React
Cocok untuk logika yang muncul berulang di banyak komponen
Setiap komponen yang pakai hook mendapat state-nya sendiri yang independen
Simpan di src/hooks/ dan ekspor dari index.js
Tetap patuhi Rules of Hooks — jangan panggil di dalam kondisi atau loop
Bagaimana pengalamanmu pertama kali bikin custom hook? Kamu bikin hook untuk apa? Ceritakan di kolom komentar di bawah — dan kalau artikel ini bermanfaat, share ke teman-temanmu yang lagi belajar React ya! 🚀
saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux
No comments:
Post a Comment