Я изучаю React и у меня нет фона Javascript.Цель состоит в том, чтобы создать выпадающее меню, используя значения, полученные из API.Вместо того, чтобы отображать фактические значения, каждая опция в моей форме отображает [объектный объект], а не значения из API.
Я могу отобразить весь массив или любые значения из массива где угодно, кроме моих форм.Я полагаю, что проблема заключается в недостаточном понимании того, как формы (и, возможно, объекты Javascript) работают для отображения.
class Test extends React.Component {
constructor() {
super();
this.state = {
randomName: [],
};
}
Вот где я получаю данные из API:
componentDidMount() {
fetch('https://randomuser.me/api/?results=10')
.then(results => {
return results.json();
}).then(data => {
let randomName = data.results.map((info => {
return(
<div key={info.results}>
{info.name.first} {info.name.last} - {info.email}
</div>
)
}))
this.setState({randomName: randomName});
console.log("state", this.state.randomName);
})
}
Ивот где я пытаюсь создать раскрывающийся список (в том же компоненте):
render() {
var test = this.state.randomName[0];
return (
<div>
{test} { /* value prints as expected here */}
<form>
<select>
<option>{test}</option> { /* value prints as [object Object] here */}
<option>first last - none@none.com</option>
<option>first last - none@none.com</option>
<option>first last - none@none.com</option>
</select>
</form>
</div>
)
}
Я ожидаю, что первая опция в раскрывающемся меню будет отображаться как «someFirstName someLastName - someEmail», новместо этого он отображается как «[объект объекта]».Это, кажется, характерно для форм.
Использование JSON.stringify (test) возвращает то, что представляется строкой всего объекта JSON.Почему использование {test} где-то в html правильно работает с этим объектом, а не когда оно заключено в опцию формы?