setState如何在这种情况下不起作用?

时间:2019-07-12 11:46:28

标签: javascript reactjs

我正在发出发布请求,并在收到的响应上设置对象的状态。我需要使用数据,以便可以将其映射并显示在下拉菜单中。

尝试使用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

这样做是为了获得可用的受让人数量。

应该在接收到数据时设置状态,我应该能够在选择选项中对其进行映射。

1 个答案:

答案 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}