React Hooks telah mengubah cara kita menulis komponen React. Dua hooks yang paling sering digunakan adalah useState dan useEffect.
useState: Mengelola State
useState memungkinkan kita menambahkan state ke functional component:
import { useState } from 'react'
function Counter() {
const [count, setCount] = useState(0)
return (
<div>
<p>Kamu sudah klik {count} kali</p>
<button onClick={() => setCount(count + 1)}>
Klik saya
</button>
</div>
)
}Tips useState
- Lazy initialization — Untuk state yang membutuhkan komputasi berat:
const [data, setData] = useState(() => {
return expensiveComputation()
})- Functional updates — Saat state baru bergantung pada state sebelumnya:
setCount(prev => prev + 1)useEffect: Menangani Side Effects
useEffect digunakan untuk operasi yang memiliki efek samping seperti fetching data, subscriptions, atau manipulasi DOM:
import { useState, useEffect } from 'react'
function UserProfile({ userId }) {
const [user, setUser] = useState(null)
useEffect(() => {
async function fetchUser() {
const response = await fetch(`/api/users/${userId}`)
const data = await response.json()
setUser(data)
}
fetchUser()
}, [userId]) // Re-run saat userId berubah
if (!user) return <p>Loading...</p>
return <h1>{user.name}</h1>
}Cleanup Function
Jangan lupa cleanup untuk menghindari memory leaks:
useEffect(() => {
const subscription = eventSource.subscribe(handler)
return () => {
subscription.unsubscribe() // Cleanup!
}
}, [])Aturan Hooks: Selalu panggil hooks di level teratas komponen, jangan di dalam loop, kondisi, atau nested function.
Dengan memahami kedua hooks ini, kamu sudah memiliki fondasi kuat untuk membangun aplikasi React modern! 💪