#javascript
Вопрос:
у меня есть api с народами, которые я пытаюсь отобразить имена людей
"peoples": [
{
"id": 2,
"mainModule": "bonding",
"description": "some random description 2",
"persons": [
{
"id": 3,
"name": "hari",
"completed": false
},
{
"id": 4,
"name": "meenu",
"completed": false
}
]
"id": 1,
"mainModule": "bonding2",
"description": "some random description 2",
"persons": [
{
"id": 3,
"name": "jisa",
"completed": false
},
{
"id": 4,
"name": "stepy",
"completed": false
}
]
},
]
Это мои данные в api
Я использую axios для установки состояния, называемого элементами
axios
.get(
"url",
config
)
.then((res) => {
console.log(res.data.peoples)//this works
console.log(res.data.peoples.persons);//here i am getting error
this.setState({ items: res.data.peoples.persons}); error
}
Я пытаюсь передать людей, чтобы я мог сопоставить имена людей в JSX
я изменил код, пожалуйста, помогите
Ответ №1:
Добро пожаловать в StackOverflow! Как вы можете видеть в своем первом фрагменте, внутри у вас есть массив peoples
, поэтому правильным способом доступа к нему будет:
res.data.peoples[0].persons
Надеюсь, это решит вашу проблему. Вы можете прочитать больше об этом в документах MDN
Редактировать:
Если вы хотите перебрать людей, вы можете сделать это:
res.data.peoples.map(person => (
<div key={person.id}>{person.name}</div>
));
Помните, что вы должны передать уникальный ключевой реквизит компоненту, чтобы React мог правильно создать и сохранить список. Более подробная информация об этом в Документах.
Комментарии:
1. что делать у меня есть 100 человек есть ли система, чтобы ее использовать для всех
2. Я отредактировал свой ответ с помощью примера JSX для вас. Дайте мне знать, если это вам поможет 🙂
3. я не в состоянии отобразить прямое разрешение . я должен установить элементы состояния, чтобы отобразить его
Ответ №2:
res.data.peoples
является массивом, поэтому вы должны повторить его. У него нет собственности на людей, у него есть [0], [1] и т. Д. Попробуйте войти в res.data.peoples[0].persons
Комментарии:
1. что делать у меня есть 100 человек есть ли система, чтобы ее использовать для всех
2. Я подозреваю, что вы должны собрать всех людей для всех людей с массивом.уменьшить
Ответ №3:
Из приведенных вами примеров данных видно, что peoples-это массив. Таким образом, чтобы получить доступ к лицам, вы должны иметь возможность получить доступ к нему, используя следующее, например, если вы хотите получить доступ к первому элементу массива:
res.data.peoples[0].persons
В противном случае, если вы хотите получить доступ к нему как к res.data.peoples.persons, вам придется изменить вывод вашего API таким образом, чтобы он выглядел следующим образом :
"peoples": {
"id": 2,
"mainModule": "bonding",
"description": "some random description 2",
"persons": [
{
"id": 3,
"name": "hari",
"completed": false
},
{
"id": 4,
"name": "meenu",
"completed": false
}
]
}