#reactjs
#reactjs
Вопрос:
У меня есть эти объекты внутри объектов, которые я хотел повторить в react
const [PersonInfo, setPersonInfo] = useState({
{name: "Juan", address: "Street1"},
{name: "Kristine", address: "Street2"}
}
Я попытался отобразить его в react с помощью
return (
<div>
{{Object.keys(PersonInfo).map(key =>
<option value={key}>{PersonInfo[key]}</option>
)}
</div>
)
Но он показывает только первое значение, которое равно Juan . Что не так с моим кодом?
Комментарии:
1. Первый фрагмент имеет неправильный синтаксис.
2. данные, которые вы передаете
useState
, недействительны, и код не будет выполняться. Пожалуйста, покажите какой-нибудь рабочий пример.3. @GabrielePetrioli значение по умолчанию в useState равно {}. и я добавляю новый объект, используя setPersonInfo({…PersonInfo, имя: «Juan», адрес: «street1», })
Ответ №1:
У вас есть синтаксические ошибки, вместо этого вам следует сохранить array
insde your useState
и выполнить цикл над ним, используя .map
const [personsInfo, setPersonsInfo] = useState([
{name: "Juan", address: "Street1"},
{name: "Kristine", address: "Street2"}
])
После этого вы можете отобразить его следующим образом:
return (
<select name="personAddress">
{personsInfo.map(person => {
return (
<option key={person.name} value={person.address}>{person.name}</option>
)
})}
</select>
);
В этом примере предполагается, что у каждого пользователя есть уникальное имя. Поэтому key={person.name}
.