Вот простой способ достижения этого, используя константы и функции в качестве свойств этих констант, нет необходимости создавать классы. Это устанавливает функции как свойства обработчика утилит, что полезно, если вы хотите добавить больше функций в ваш API.
Вызов API и сортировка
Класс API
const values = {
url: "https://restcountries.eu/rest/v2/all"
};
const api = {
call: async function(url = null){
try{
if(url === null){
url = values.url;
}
let response = await fetch(url, options);
let responseOK = response && response.ok;
if (responseOK) {
let data = await response.json();
return api.sort(data);
} else {
// handle response not ok
}
} catch(e){
// handle promise errors
}
},
sort: function(data){
// return sorted data
}
}
export default api;
Класс реагирования
импортировать api из 'api.js';
class App extends Component {
constructor(props){
super(props);
this.state = {
}
}
async componentDidMount() {
let result = await api.call(); // or api.call(someUrl)
// do something with result
}
}
Сортировка после вызова API только при необходимости
С этим решением вы также можете отделить вызов API от сортировки данных, например:
Класс API
const values = {
url: "https://restcountries.eu/rest/v2/all"
};
const api = {
call: async function(url = null){
try{
if(url === null){
url = values.url;
}
let response = await fetch(url, options);
let responseOK = response && response.ok;
if (responseOK) {
return await response.json();
} else {
// handle response not ok
}
} catch(e){
// handle promise errors
}
},
sort: function(data){
// return sorted data
}
}
export default api;
Класс реагирования
импортировать api из 'api.js';
class App extends Component {
constructor(props){
super(props);
this.state = {
sort: true,
}
}
async componentDidMount() {
let result = await api.call(); // or api.call(someUrl)
// do something with result
// sort if necessary
let sortedResult = api.sort(result);
// do something with sortedResult
}
}
Вы также можете использовать Axios , как видно из этого ответа .
Не забудьте правильно обрабатывать неразрешенные обещания, используя try / catch , если используете его таким образом.