- Асинхронные вызовы в классовых компонентах
- Асинхронные вызовы в функциональных компонентах
- Заключение
Асинхронное программирование — важный аспект разработки современных веб-приложений, и работа с асинхронным кодом в React имеет свои особенности. Хотя основные концепции остаются такими же, как в курсе "Асинхронное программирование", для проформы стоит пробежаться.
Асинхронные вызовы в классовых компонентах
import React from 'react';
import axios from 'axios';
class Loader extends React.Component {
constructor(props) {
super(props);
this.state = { url: null };
}
handleClick = async () => {
try {
const res = await axios.get('/images/random');
this.setState({ url: res.data });
} catch (error) {
console.error('Error fetching image:', error);
}
}
render() {
const { url } = this.state;
return (
<div>
<button onClick={this.handleClick}>Load Random Image</button>
{url && <img src={url} alt="Random" />}
</div>
);
}
}
В данном примере обработчик handleClick()
является асинхронной функцией, которая выполняет запрос к API и обновляет состояние компонента. Не забываем обрабатывать ошибки, используя try-catch
.
Асинхронные вызовы в функциональных компонентах
В функциональных компонентах подобный код был бы написан с использованием хуков useState()
и useEffect()
. С хуками вы подробнее познакомитесь в следующем курсе, а пока можете просто посмотреть:
import React, { useState, useEffect } from 'react';
import axios from 'axios';
const Loader = () => {
const [url, setUrl] = useState(null);
const fetchImage = async () => {
try {
const res = await axios.get('/images/random');
setUrl(res.data);
} catch (error) {
console.error('Error fetching image:', error);
}
};
useEffect(() => {
fetchImage();
}, []);
return (
<div>
<button onClick={fetchImage}>Load Random Image</button>
{url && <img src={url} alt="Random" />}
</div>
);
};
Самое главное на что надо обратить внимание в этих примерах это то, что мы просто делаем обработчик асинхронным, а дальше всё как обычно.
Заключение
Асинхронная обработка в React — это важный аспект разработки интерактивных веб-приложений. В классовых компонентах мы можем легко интегрировать асинхронные вызовы, используя методы жизненного цикла и асинхронные функции. В функциональных компонентах аналогичные задачи решаются с помощью хуков, с которыми вы познакомитесь в дальнейшем.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.