Error handling dalam pengambilan data
Error handling dalam pengambilan data adalah praktik penting untuk memastikan aplikasi Anda tetap stabil dan memberikan pengalaman pengguna yang baik, bahkan ketika terjadi masalah saat melakukan permintaan ke API atau server. Di React, error handling dalam pengambilan data dapat dilakukan menggunakan berbagai teknik, termasuk try-catch
dalam async/await
, menangani kesalahan dalam fetch
, atau menggunakan metode bawaan dari pustaka seperti axios
.
Teknik Error Handling dalam Pengambilan Data
Menggunakan
try-catch
denganasync/await
Ini adalah cara yang umum untuk menangani kesalahan dalam pengambilan data asinkron di JavaScript dan React.
Contoh:
import React, { useState, useEffect } from 'react'; function App() { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchData = async () => { try { const response = await fetch('https://jsonplaceholder.typicode.com/posts'); if (!response.ok) { throw new Error('Network response was not ok'); } const data = await response.json(); setData(data); setLoading(false); } catch (error) { setError(error.message); setLoading(false); } }; fetchData(); }, []); if (loading) { return <p>Loading...</p>; } if (error) { return <p>Error: {error}</p>; } return ( <div className="container"> <h1>Daftar Artikel</h1> <ul> {data.map(article => ( <li key={article.id}> <h2>{article.title}</h2> <p>{article.body}</p> </li> ))} </ul> </div> ); } export default App;
Penjelasan:
try-catch: Blok
try
digunakan untuk mencoba melakukan pengambilan data. Jika terjadi kesalahan, blokcatch
akan menangkap kesalahan tersebut dan mengatur stateerror
dengan pesan kesalahan.Checking Response: Sebelum memproses data, kita memeriksa apakah
response.ok
bernilaitrue
. Jika tidak, kita memicu error manual denganthrow new Error
.Error State: Jika terjadi kesalahan, kita menampilkan pesan error kepada pengguna.
Handling Error dalam
fetch
tanpaasync/await
Jika Anda menggunakan
fetch
tanpaasync/await
, Anda masih dapat menangani kesalahan menggunakan.catch
.Contoh:
import React, { useState, useEffect } from 'react'; function App() { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { fetch('https://jsonplaceholder.typicode.com/posts') .then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(data => { setData(data); setLoading(false); }) .catch(error => { setError(error.message); setLoading(false); }); }, []); if (loading) { return <p>Loading...</p>; } if (error) { return <p>Error: {error}</p>; } return ( <div className="container"> <h1>Daftar Artikel</h1> <ul> {data.map(article => ( <li key={article.id}> <h2>{article.title}</h2> <p>{article.body}</p> </li> ))} </ul> </div> ); } export default App;
Penjelasan:
Error Handling dalam
.catch
: Semua kesalahan dalam rantai.then
ditangani oleh.catch
, yang menangkap kesalahan dan mengatur stateerror
.
Menggunakan
axios
untuk Error Handlingaxios
adalah pustaka HTTP populer yang memiliki fitur bawaan untuk menangani kesalahan dengan lebih baik daripadafetch
.Contoh:
import React, { useState, useEffect } from 'react'; import axios from 'axios'; function App() { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { axios.get('https://jsonplaceholder.typicode.com/posts') .then(response => { setData(response.data); setLoading(false); }) .catch(error => { setError(error.message); setLoading(false); }); }, []); if (loading) { return <p>Loading...</p>; } if (error) { return <p>Error: {error}</p>; } return ( <div className="container"> <h1>Daftar Artikel</h1> <ul> {data.map(article => ( <li key={article.id}> <h2>{article.title}</h2> <p>{article.body}</p> </li> ))} </ul> </div> ); } export default App;
Penjelasan:
axios
otomatis menangani kesalahan HTTP dengan mengarahkan kecatch
jika terjadi error, dan memberikan pesan kesalahan yang lebih informatif.
Penanganan Error Tambahan
Retrying: Anda dapat menambahkan logika untuk mencoba ulang permintaan jika gagal, mungkin menggunakan pustaka seperti
react-query
.Error Boundaries: Untuk kesalahan rendering, React menyediakan fitur Error Boundaries untuk menangkap kesalahan yang terjadi di dalam komponen dan menampilkan fallback UI.
Sumber
Dengan menggunakan teknik-teknik ini, Anda dapat memastikan bahwa aplikasi React Anda tetap robust dan memberikan pengalaman pengguna yang baik, bahkan ketika terjadi kesalahan dalam pengambilan data.
Last updated