Получаю ответ от API OpenWeatherMap. Каким образом можно было бы получить код ответа и в зависимости от него отобразить контент? К примеру, если статус 404
то вывести ...
Простой и примитивный пример. Добавим в конструкторе в state
несколько параметров:
constructor(props) {
super(props);
this.state = {
loading: true, // режим загрузки
statusCode: null, // статус ответа
}
}
Конструктор может содержать и другой код, но для примера мы определили две переменные в стейте, loading
- режим загрузки, как только мы попадаем в конструктор, проставляем сюда true
, как только мы получим ответ от API - поменяем этот параметр, и, соответственно и statusCode
поменяем - запишем туда код ответа. Далее, к примеру внутри метода componentDidMount
делаем отправку запроса:
componentDidMount() {
fetch... // тут ваш API запрос
.then((response) => {
this.setState({ loading: false, statusCode: response.status });
})
.catch((error) => {
console.error(error);
this.setState({ loading: false });
});
}
А внутри рендеринга добавим простые проверки на статус и загрузку из state
:
render() {
// ответ пока не получен - загрузка
if (this.state.loading) {
return (<p>Loading...</p>);
}
// ответ получен, но нет статуса ответа (смотри консоль)
if (!this.state.loading && !this.state.statusCode) {
return (<p>Something went wrong. See console logging.</p>);
}
// ответ получен, статус 200
if (this.state.statusCode === 200) {
return (<p>All good</p>);
}
// ответ получен, статус 404
if (this.state.statusCode === 404) {
return (<p>Not found</p>);
}
// ответ получен, остальные статусы
return (<p>Unexpected status code: {this.state.statusCode}</p>);
}
Полезные ссылки для изучения:
render()
componentDidMount()
console.error()
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как мне передать картинку через массив? Имеется массив Const LocalStorage = [ { Id: 1, Name: "one" … } … ]
Нашел селектор, который отвечает за переход к следующему фото из альбома вконтакте: #pv_nav_btn_right хотел перейти таким образом:
Такая ситуация: Есть главная страница indexhtml, на ней вообще не используется React, на главной странице есть ссылка на страницу на которой используется...
Есть скрипт на JavaScript принимаюший n строк и находящий наибольшую общую подстроку