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-catchdenganasync/awaitIni 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
trydigunakan untuk mencoba melakukan pengambilan data. Jika terjadi kesalahan, blokcatchakan menangkap kesalahan tersebut dan mengatur stateerrordengan pesan kesalahan.Checking Response: Sebelum memproses data, kita memeriksa apakah
response.okbernilaitrue. Jika tidak, kita memicu error manual denganthrow new Error.Error State: Jika terjadi kesalahan, kita menampilkan pesan error kepada pengguna.
Handling Error dalam
fetchtanpaasync/awaitJika Anda menggunakan
fetchtanpaasync/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.thenditangani oleh.catch, yang menangkap kesalahan dan mengatur stateerror.
Menggunakan
axiosuntuk Error Handlingaxiosadalah 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:
axiosotomatis menangani kesalahan HTTP dengan mengarahkan kecatchjika 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