در نسخههای قبلی اپلیکیشن، از fetch برای دریافت داده از API استفاده میکردیم. اما این API در برخی مرورگرهای قدیمی یا محیطهای تست headless پشتیبانی نمیشود. برای حل این مشکل، میتوان از کتابخانهٔ axios استفاده کرد که یک جایگزین پایدار و قدرتمند برای fetch است.
ابتدا axios را نصب میکنیم:
npm install axiosسپس آن را در فایل App.jsx وارد میکنیم:
import axios from 'axios';در تابع دریافت دادهها، بهجای fetch از axios.get() استفاده میکنیم:
const handleFetchStories = React.useCallback(() => {
dispatchStories({ type: 'STORIES_FETCH_INIT' });
axios
.get(url)
.then((result) => {
dispatchStories({
type: 'STORIES_FETCH_SUCCESS',
payload: result.data.hits,
});
})
.catch(() =>
dispatchStories({ type: 'STORIES_FETCH_FAILURE' })
);
}, [url]);برای خوانایی بیشتر، میتوان از async/await بهجای then/catch استفاده کرد:
const handleFetchStories = React.useCallback(async () => {
dispatchStories({ type: 'STORIES_FETCH_INIT' });
try {
const result = await axios.get(url);
dispatchStories({
type: 'STORIES_FETCH_SUCCESS',
payload: result.data.hits,
});
} catch {
dispatchStories({ type: 'STORIES_FETCH_FAILURE' });
}
}, [url]);با استفاده از async/await، کد بهصورت همزمانی (synchronous-like) خوانده میشود و مدیریت خطا با try/catch سادهتر میشود.
thenاستفاده از کتابخانههای شخص ثالث مانند axios در React باعث افزایش پایداری و قابلیت توسعهپذیری اپلیکیشن میشود. همچنین با استفاده از async/await، کد دریافت دادهها خواناتر و قابل مدیریتتر خواهد بود. این تکنیکها برای پروژههای واقعی و مقیاسپذیر ضروری هستند.