ReactJS - Menggunakan useCallback: Panduan untuk Pemula
Hai, pengembang React masa depan! Hari ini, kita akan mendalami salah satu hook yang kuat di React: useCallback
. Jangan khawatir jika Anda baru dalam pemrograman; saya akan menggembalakan Anda melalui konsep ini langkah demi langkah, seperti yang saya lakukan untuk banyak siswa selama tahun-tahun mengajar saya. Mari kita memulai perjalanan menarik ini bersama!
Apa itu useCallback?
Sebelum kita masuk ke detailnya, mari kita pahami apa arti useCallback
. Bayangkan Anda sedang membuat kue (saya menyukai analogi ini karena siapa yang tidak menyukai kue?). Anda memiliki resep khusus yang Anda gunakan setiap kali. useCallback
seperti menulis resep itu sekali dan menggunakannya setiap kali Anda perlu membuat kue, bukan mencoba mengingatnya setiap kali.
Dalam istilah React, useCallback
adalah hook yang membantu kita optimalkan kinerja aplikasi kita dengan memoizing (menyimpan) fungsi.
Tanda Tangan Hook useCallback
Mari kita lihat bagaimana kita menulis useCallback
:
const memoizedCallback = useCallback(
() => {
doSomething(a, b);
},
[a, b],
);
Jangan panik! Saya tahu ini mungkin terlihat kompleks, tapi kita akan membongkarnya:
-
memoizedCallback
: Ini adalah fungsi yanguseCallback
kembalikan. -
() => { doSomething(a, b); }
: Ini adalah fungsi yang kita ingin memoize. -
[a, b]
: Ini disebut array dependensi. Itu memberitahu React kapan membuat lagi fungsi kita.
Pertimbangkan ini: Anda memberitahu React, "Hey, ingatkan ini fungsi untuk saya, dan hanya berikan saya yang baru jika a
atau b
berubah."
Menggunakan useCallback
Sekarang, mari kita lihat useCallback
dalam aksi dengan contoh sederhana:
import React, { useState, useCallback } from 'react';
function Counter() {
const [count, setCount] = useState(0);
const increment = useCallback(() => {
setCount(c => c + 1);
}, []);
return (
<div>
Count: {count}
<button onClick={increment}>Increment</button>
</div>
);
}
Mari kitauraikan ini:
- Kita import
useCallback
dari React. - Kita buat variabel state
count
menggunakanuseState
. - Kita tentukan fungsi
increment
menggunakanuseCallback
. Fungsi ini akan menambahkan 1 ke nilai count. - Array kosong
[]
sebagai argumen kedua berarti fungsi ini tidak akan pernah berubah. - Kita render nilai count dan tombol yang memanggil
increment
saat diklik.
Kasus Penggunaan useCallback
Sekarang Anda mungkin bertanya-tanya, "Kapan harus saya gunakan useCallback
?" Pregunta bagus! Mari kita lihat beberapa kasus umum:
1. Menyampaikan Callback ke Komponen Anak yang Tergantung
Bayangkan Anda memiliki komponen anak yang dibungkus oleh React.memo
(jangan khawatir saat ini, kita akan membahasnya di lesyon berikutnya). Anda ingin menyampaikan fungsi ke komponen ini:
import React, { useState, useCallback } from 'react';
function ParentComponent() {
const [count, setCount] = useState(0);
const handleClick = useCallback(() => {
setCount(count + 1);
}, [count]);
return (
<div>
<ChildComponent onClick={handleClick} />
<p>Count: {count}</p>
</div>
);
}
const ChildComponent = React.memo(({ onClick }) => {
console.log("Child rendered!");
return <button onClick={onClick}>Increment</button>;
});
Di sini, useCallback
memastikan bahwa handleClick
hanya berubah jika count
berubah, mencegah re-render yang tidak diperlukan dari ChildComponent
.
2. Dalam Dependensi useEffect
useCallback
juga berguna saat fungsi adalah dependensi hook useEffect
:
import React, { useState, useCallback, useEffect } from 'react';
function DataFetcher() {
const [data, setData] = useState(null);
const fetchData = useCallback(() => {
// Bayangkan ini sedang mengambil data dari API
setTimeout(() => setData("New Data!"), 1000);
}, []);
useEffect(() => {
fetchData();
}, [fetchData]);
return <div>{data ? data : "Loading..."}</div>;
}
Dalam contoh ini, useCallback
memastikan bahwa fetchData
tidak berubah pada setiap render, mencegah effect berjalan secara tidak diperlukan.
Keuntungan dan Kerugian
Mari rangkum keuntungan dan kerugian dari useCallback
:
Keuntungan | Kerugian |
---|---|
Mencegah re-render yang tidak diperlukan | Dapat membuat kode lebih kompleks |
Optimalkan kinerja untuk komponen anak | Overuse dapat menyebabkan masalah kinerja |
Berguna dalam dependensi useEffect
|
Memerlukan pemahaman tentang closure dan memoization |
membantu membuat callback stabil | Mungkin tidak memberikan keuntungan signifikan dalam komponen sederhana |
Kesimpulan
Wah! Kita telah meliputi banyak hal hari ini. useCallback
adalah alat kuat dalam peralatan React Anda, tetapi seperti segala alat, penting untuk digunakan bijaksana. Selama Anda terus belajar React, Anda akan mengembangkan直觉 untuk kapan menggunakannya.
Ingat, optimisasi adalah hal yang bagus, tetapi kode yang jelas dan mudah dibaca adalah yang lebih penting. Jangan merasa terpaksa untuk menggunakan useCallback
di mana-mana – gunakan saja saat itu cocok untuk aplikasi Anda.
Teruslatih, tetap curioso, dan happy coding! Dan ingat, seperti memperfectioning resep kue, memahami React memerlukan waktu dan kesabaran. Anda bisa melakukan ini!
Credits: Image by storyset