我正在发出发布请求,并在收到的响应上设置对象的状态。我需要使用数据,以便可以将其映射并显示在下拉菜单中。
尝试使用length
,但无效。
组件中的状态:
this.state = {
assignees: []
};
API请求:
axios
.post("http://localhost:3600/get_assignees", {
id: id
})
.then(res => {
this.setState({ assginees: res.data });
});
解构
const { assginees } = this.state;
映射到选择元素会抛出Cannot read property length of undefined
<select className="Dropdown"
name="assginees"
defaultValue={"DEFAULT"} > {
assginees.length
? assginees.map(item => (
<option value={item} key={item}>
{item.login}
</option>
))
: null }
</select>
响应结构类似于此处收到的结构
GET /repos/:owner/:repo/collaborators
这样做是为了获得可用的受让人数量。
应该在接收到数据时设置状态,我应该能够在选择选项中对其进行映射。
答案 0 :(得分:2)
问题在这里
const { assginees } = this.state;
您的状态为assignees
,这里没有assginees
的错字,
只需将其更改为此,
const { assignees } = this.state;
{assignees.length > 0
? assignees.map(item => (
<option value={item} key={item}>
{item.login}
</option>
))
: null}