Sobat Digital, tahukah kamu kalau ada fitur keren yang bikin pengembangan aplikasi di React jadi lebih mudah dan seru? Yup, itu adalah React Hooks.
Dengan Hooks, kamu bisa menggunakan state dan fitur React lainnya tanpa harus membuat class—cukup pakai fungsi saja. Hooks seperti useState, useEffect, dan lainnya membantu kamu membuat kode yang lebih simpel, rapi, dan mudah dipahami.
Kalau kamu penasaran gimana Hooks bisa bikin hidupmu sebagai developer jadi lebih efisien, yuk baca artikel ini sampai habis.
Daftar Isi Artikel
TogglePengenalan React Hooks dalam Pengembangan React JS
Dibandingkan dengan pendekatan sebelumnya yang bergantung pada komponen kelas, Hooks memungkinkan kita untuk mengelola state dan life cycle dalam komponen fungsional, membuat kode lebih bersih dan mudah dikelola.
Dengan Hooks, kita tidak hanya bisa membuat komponen yang lebih ringan, tetapi juga lebih cepat dalam performa dan pemeliharaannya.
Penggunaan React Hooks dalam Pengembangan Modern
Dalam pengembangan modern, React Hooks menjadi pilihan populer karena kemampuannya yang fleksibel. Hooks seperti useState dan useEffect adalah pondasi utama untuk mengelola state dan efek samping di aplikasi React, tanpa harus berurusan dengan kode kompleks dari komponen kelas.
Perbedaan Komponen Kelas dan Komponen Fungsional dengan Hooks
Salah satu perubahan yang dibawa oleh Hooks adalah peralihan dari komponen kelas ke komponen fungsional.
Dengan komponen kelas, kita membutuhkan banyak boilerplate dan pengelolaan kode lebih rumit untuk menangani state dan life cycle.
Sementara itu, Hooks pada komponen fungsional memungkinkan akses ke fitur ini dengan kode yang lebih ringkas dan modular, memberikan kita lebih banyak kontrol atas pengalaman pengguna dalam aplikasi yang kita kembangkan.
Baca Juga: React JS Adalah : Definisi , Pengertian & Cara Installnya
Menggunakan useState Hook untuk Mengelola State
Di React, useState Hook adalah salah satu cara paling praktis untuk mengelola state internal dalam komponen fungsional.
Dengan useState, kita bisa menyimpan dan memperbarui data pada level komponen tanpa harus menggunakan komponen kelas, membuat kode lebih bersih dan mudah dipahami.
Penggunaan useState untuk Mengelola State di React
useState memungkinkan kita membuat variabel state yang reaktif dan akan memicu pembaruan tampilan setiap kali nilai tersebut berubah.
Misalnya, jika Sobat Digital ingin mengelola hitungan klik tombol, kamu dapat memanfaatkan useState untuk menyimpan angka hitungan yang akan bertambah setiap kali tombol diklik.
Dengan sintaks yang sederhana dan intuitif, useState sangat cocok untuk mengelola data seperti teks input, nilai angka, atau status aktif/nonaktif di komponen.
Implementasi useState Hook dalam Proyek React Sederhana
Untuk mengimplementasikan useState, cukup impor dari React dan tetapkan nilai awal dalam deklarasi Hook.
Contoh penggunaan useState untuk menambah hitungan klik bisa terlihat seperti ini:
import React, { useState } from ‘react’; function Counter() { const [count, setCount] = useState(0); const incrementCount = () => setCount(count + 1); return ( <div> <p>Count: {count}</p> <button onClick={incrementCount}>Increment</button> </div> ); }
Dalam kode ini, count berperan sebagai state yang menyimpan hitungan, sedangkan setCount adalah fungsi untuk memperbarui nilai count.
Mengelola Side Effects dengan useEffect Hook
Di React, useEffect adalah hook khusus untuk mengelola side effects yang terjadi pada komponen.
Side effects meliputi operasi seperti pengambilan data dari API, manipulasi langsung terhadap DOM, atau penambahan dan pembersihan event listener—hal-hal yang tidak secara langsung terkait dengan rendering komponen.
Dengan useEffect, Sobat Digital dapat memastikan operasi ini berjalan dengan aman dan efisien, tanpa menyebabkan masalah performa atau memory leaks.
Penjelasan useEffect sebagai Hook untuk Side Effects
useEffect bekerja seperti jendela pengawasan yang “mengamati” perubahan pada data atau state di komponen.
Hook ini mengambil dua parameter: fungsi effect yang berisi operasi yang ingin kita jalankan, dan array dependencies yang memungkinkan kita mengontrol kapan effect ini dijalankan.
Jika array ini kosong, effect hanya akan dijalankan saat komponen pertama kali dirender dan saat cleanup.
Cara Kerja useEffect dalam Komponen
Saat kita menggunakan useEffect, React akan menjalankan fungsi effect yang kita definisikan setelah setiap kali rendering, kecuali jika kita telah menentukan array dependencies.
Jika ada dependencies yang berubah, React akan mengulangi effect, dan menjalankan operasi pembersihan untuk mencegah penumpukan fungsi.
Contoh Penggunaan useEffect untuk Fetch Data dan Event Listener
Contoh useEffect untuk mengambil data dari API saat komponen pertama kali dirender adalah sebagai berikut:
DataFetcher() { const [data, setData] = useState(null); useEffect(() => { fetch(‘https://jsonplaceholder.typicode.com/posts/1’) .then(response => response.json()) .then(data => setData(data)); }, []); // Empty dependency array ensures this only runs on mount return ( <div> <h2>Data:</h2> <pre>{JSON.stringify(data, null, 2)}</pre> </div> ); }
Di sini, useEffect melakukan fetch data dari API sekali saat komponen dirender pertama kali karena array dependencies kosong.
Contoh lain menggunakan event listener dengan cleanup untuk menghindari memory leaks:import React, { useEffect, useState } from ‘react’; function WindowResize() { const [windowWidth, setWindowWidth] = useState(window.innerWidth); useEffect(() => { const handleResize = () => setWindowWidth(window.innerWidth); window.addEventListener(‘resize’, handleResize); // Cleanup function to remove event listener when component unmounts return () => window.removeEventListener(‘resize’, handleResize); }, []); return <p>Window width: {windowWidth}px</p>; }
Dalam contoh coding ini, event listener untuk menangkap ukuran jendela ditambahkan saat komponen dipasang dan dibersihkan saat komponen dihapus.
Memahami useContext untuk Mengakses Global State
Di React, useContext adalah hook yang memungkinkan komponen untuk mengakses global state secara langsung tanpa perlu melakukan prop drilling—yakni proses mengirimkan data melalui setiap lapisan komponen yang tidak perlu.
Dengan useContext, Sobat Digital bisa membagikan state atau data tertentu ke seluruh bagian aplikasi, sehingga pengelolaan state menjadi lebih mudah, terutama dalam aplikasi berskala besar di mana banyak komponen perlu mengakses data yang sama.
Pengelolaan Global State dengan useContext
useContext bekerja bersama Context API di React, yang terdiri dari dua elemen penting, yaitu:
- Provider – Bagian ini menyimpan nilai state yang ingin dibagikan. Provider berada di sekitar komponen yang membutuhkan akses ke global state dan memberikan nilai tersebut ke semua komponen anak di dalamnya.
- Consumer (atau dalam hal ini, useContext sebagai hook) – Digunakan oleh komponen untuk mendapatkan nilai state yang disediakan oleh Provider.
Contoh Implementasi useContext dalam Komponen React
Contoh Implementasi useContext dalam komponen React adalah sebagai berikut:
1. Membuat Context dan Provider
Misalkan Sobat Digital membuat aplikasi yang membutuhkan global state untuk menyimpan informasi pengguna yang sedang login.import React, { createContext, useState } from ‘react’; // Create a UserContext export const UserContext = createContext(); // Provider component export function UserProvider({ children }) { const [user, setUser] = useState({ name: ‘Alice’, loggedIn: true }); return ( <UserContext.Provider value={{ user, setUser }}> {children} </UserContext.Provider> ); }
Di sini, Sobat Digital membuat UserContext dan UserProvider. Komponen UserProvider menyediakan state user ke semua komponen yang berada di dalamnya.
2. Menggunakan useContext untuk Mengakses Global State
Sekarang, Sobat Digital bisa mengakses state user di komponen lain tanpa perlu meneruskan props.
import React, { useContext } from ‘react’; import { UserContext } from ‘./UserProvider’; function UserProfile() { const { user, setUser } = useContext(UserContext); const handleLogout = () => setUser({ name: ”, loggedIn: false }); return ( <div> <h1>Welcome, {user.name}!</h1> <button onClick={handleLogout}>Logout</button> </div> ); } export default UserProfile;
Di sini, komponen UserProfile menggunakan useContext untuk mendapatkan akses ke state user dan fungsi setUser. Komponen ini memungkinkan kamu untuk mengakses atau mengubah data state global tanpa harus mengirimkan props dari komponen di atasnya.
Baca Juga: UML Adalah : Pengertian , Jenis & Kategorinya
Optimisasi Kinerja dengan Hooks useMemo dan useCallback
Dalam aplikasi React, komponen yang kompleks sering kali membutuhkan optimisasi kinerja agar aplikasi tetap responsif dan cepat. Di sinilah hooks seperti useMemo dan useCallback berperan penting.
Kedua hooks ini mencegah perhitungan ulang atau rendering yang tidak diperlukan, membantu menghindari beban kinerja yang berlebihan.
Optimisasi Kinerja dengan useMemo
useMemo adalah hook yang memungkinkan kita untuk “menyimpan” nilai hasil dari fungsi kompleks sehingga React tidak menghitung ulang nilai tersebut setiap kali komponen di-render.
Misalnya, jika suatu fungsi membutuhkan perhitungan yang intensif, useMemo dapat menyimpan hasil tersebut dan hanya akan menghitung ulang ketika dependency (ketergantungan) tertentu berubah.
Contoh Penggunaan useMemoimport React, { useMemo, useState } from ‘react’; function ExpensiveCalculationComponent({ num }) { const expensiveCalculation = useMemo(() => { console.log(“Calculating…”); return num ** 2; }, [num]); return <div>Result: {expensiveCalculation}</div>; }
Di sini, expensiveCalculation hanya akan dihitung ulang jika nilai num berubah. Ini meningkatkan kinerja karena menghindari perhitungan ulang yang tidak diperlukan ketika komponen di-render ulang.
Kapan Menggunakan useMemo dan useCallback
Pakai useMemo untuk menyimpan hasil dari perhitungan kompleks, sehingga nilai yang sama tidak dihitung ulang pada setiap render.
Sementara itu, gunakan useCallback ketika ingin memastikan bahwa fungsi yang sama tidak didefinisikan ulang pada setiap render. Ini penting saat fungsi tersebut diteruskan ke komponen child yang hanya ingin re-render ketika ada perubahan yang relevan.
Mencegah Rerender Tidak Perlu dengan useCallback
useCallback bekerja mirip dengan useMemo, tetapi untuk fungsi. Saat kita meneruskan fungsi sebagai props ke komponen child, hook ini mencegah fungsi didefinisikan ulang setiap kali komponen parent di-render, sehingga membantu mengurangi jumlah re-render komponen child.
Contoh Penggunaan useCallbackimport React, { useState, useCallback } from ‘react’; function ParentComponent() { const [count, setCount] = useState(0); const [text, setText] = useState(“”); const incrementCount = useCallback(() => { setCount((prevCount) => prevCount + 1); }, []); return ( <div> <ChildComponent onIncrement={incrementCount} /> <input value={text} onChange={(e) => setText(e.target.value)} /> <p>Count: {count}</p> </div> ); } function ChildComponent({ onIncrement }) { return <button onClick={onIncrement}>Increment</button>; }
Di sini, fungsi incrementCount tidak akan dibuat ulang setiap kali ParentComponent re-render, karena useCallback hanya akan membuat ulang fungsi jika ada perubahan dalam dependency array (dalam hal ini kosong [], artinya tidak akan pernah berubah).
Dengan useMemo dan useCallback, kita dapat mengoptimalkan kinerja aplikasi React kita, terutama dalam komponen yang memiliki perhitungan intensif atau banyak re-renders. Memahami kapan dan bagaimana menggunakan hooks ini sangat penting dalam membangun aplikasi yang efisien dan responsif.
Kembangkan Potensimu dengan Pembelajaran Berkualitas di ITBOX!
Mengoptimalkan kinerja dengan React Hooks seperti useMemo dan useCallback hanyalah sebagian kecil dari keterampilan yang diperlukan untuk menjadi pengembang web yang andal.
Bagi kamu yang tertarik menguasai React lebih dalam serta keterampilan lain dalam pengembangan web, Kursus Online Web Developer di ITBOX adalah pilihan terbaik.
Di ITBOX, kamu akan belajar dengan metode self-teaching, memiliki akses seumur hidup ke video berkualitas tinggi, tanpa perlu mengerjakan tugas proyek yang membebani, sehingga kamu bisa fokus memahami materi dengan mendalam.
Selain itu, ITBOX menawarkan fleksibilitas jadwal, akses diskusi dengan coach, dan sertifikat setelah menyelesaikan kursus. Tingkatkan keahlian kamu dan siap untuk menjadi seorang web developer profesional bersama ITBOX.
Mulai belajar sekarang di Kursus Online Web Developer ITBOX dan dapatkan semua yang kamu butuhkan untuk sukses dalam dunia pengembangan web ada di sini!


