Да, это возможно и настоятельно рекомендуется, особенно если ваш проект расширяется.
Я предлагаю использовать ax ios, поскольку он автоматически возвращает JSON и его легче использовать, чем API извлечения.
Я также не предлагаю изменять состояние в этом файле, так как это станет кошмаром при обслуживании и отладке кода.
Создание fetch.js
(или как бы вы это ни называли)
import axios from 'axios';
const apiBaseURL = 'www.whatever.com'
export const GET = url => {
return axios.get(`${apiBaseURL}/${url}`);
}
// if need for headers etc.
const headers = 'some headers';
export const POST = (url, data) => {
return axios(`${apiBaseURL}/${url}`, {
method: 'POST',
headers,
data,
});
}
В компоненте реагирования:
импортируйте файл вверху:
import { GET, POST } from './fetch.js';
В методе компонента:
async getData(apiEndpoint) {
const { data: Items } = await GET(apiEndpoint);
if (Items) {
// Set data to state
this.setState({ Items });
}
else {
// error
}
}
То же самое можно достичь с помощью простого API извлечения.