我使用axios获取用户名数组,并使用setState更新状态。我已将users记录到控制台,以确保它是一个阵列。
axios.get("http://localhost:5000/users/")
.then((res) => {
if (res.data.length > 1) {
const users = res.data.map(el => el.username);
setState((preValue) => {
return {
...preValue,
users : users
}
})
console.log(state)
}
})
.catch((err)=>console.log(err)) 当它在JSX中呈现出来时。数组的map方法返回未定义的错误。但是,可以将数组呈现为字符串。


<h3>Edit Exercise</h3>
<form onSubmit={onSubmit}>
<div className="form-group">
<label>Username: {state.users}</label>
{/* <select required className="form-control"
value={state.username} onChange={onChangeUsername}>
{
state.users.map(function (user) {
return <option key={user} value={user}>{user}</option>
})
}
</select> */}
</div>发布于 2020-09-28 17:50:55
如果您的组件是类组件,则应在状态(this.state.users)之前使用此关键字。在使用map时,您可以使用Optional chaining检查它是未定义的还是null。
因此,它将是这样的:
{ this.state?.users.map(function (user) {
return <option key={user} value={user}>{user}</option>
})
}https://stackoverflow.com/questions/64099572
复制相似问题