#reactjs #get #axios #httprequest
#reactjs #получить #axios #httprequest
Вопрос:
Я попытался создать приложение из случайного пользовательского API в react и использовал библиотеку axios для HTTP-запросов.Я создал отдельный файл для базового API с помощью axios.create, и код файла выглядит следующим образом,
import axios from 'axios'
export default axios.create({
baseURL: `http://jsonplaceholder.typicode.com`,
});
Затем я использовал это в другом файле, чтобы сделать запрос GET и сохранить данные в state
on componentDidMount, чтобы я мог получить доступ к данным в пользовательском интерфейсе.
import React from "react";
import API from "../api";
export default class PersonList extends React.Component {
state = {
persons: []
};
componentDidMount() {
API
.get('/').then((data) => {
const persons = data.data;
this.setState({ persons });
console.log(this.state.persons);
});
}
render() {
const { persons } = this.state;
console.log('Stato',persons)
return (
<ul>
{persons.map((person) => (
<li key={person.id}>{person.name}</li>
))}
</ul>
);
}
}
Но это не работает, потому что состояние не заполнено данными пользователей, поэтому функция .map() выдает ошибку.
Ответ №1:
Вы сталкиваетесь с этой ошибкой из-за используемого вами URL-адреса. В вашем примере вы используете https://jsonplaceholder.typicode.com
в качестве конечной точки in componentDidMount
, но это не вернет никаких пользовательских данных-заполнителей. Я полагаю, вы имели в виду использовать https://jsonplaceholder.typicode.com/users
вместо этого.
У меня есть рабочий пример здесь: https://codesandbox.io/s/axios-instance-ki9g6 . Обратите внимание , что мне нужно было только переодеться /
в componentDidMount
/users
.
Комментарии:
1. В качестве последующего предложения, использование чего-то вроде
lodash
илиramda
может помочь устранить ошибки, вызванные,map
если список, который вы пытаетесь перебрать, не имеет ожидаемой формы. Конечно, это не устраняет вашу реальную проблему, но может сократить количество ошибок, которые возникают у вас на лице. Я соответствующим образом обновлю свою песочницу, чтобы показать пример этого.2. Нет проблем. Рад, что смог помочь!