Javascript 在arrow函数中找不到变量

Javascript 在arrow函数中找不到变量,javascript,ecmascript-6,react-jsx,Javascript,Ecmascript 6,React Jsx,错误(通过选择菜单项触发): 类型错误:所选组织未定义 为以下代码段返回: renderItems() { let { orgs, org_selected, orgs_loading } = this.props; ... return <Nav> <NavDropdown title={org_login} id="basic-nav-dropdown"> {_.map(orgs, (org) =>

错误(通过选择菜单项触发):

类型错误:所选组织未定义

为以下代码段返回:

renderItems() {
    let { orgs, org_selected, orgs_loading } = this.props;
    ...
    return <Nav>
        <NavDropdown title={org_login} id="basic-nav-dropdown">
            {_.map(orgs, (org) => {
                return <MenuItem
                    key={org.id}
                    onSelect={() => org_selected.set(org.id)}>{org.login}</MenuItem>;
            })}
        </NavDropdown>
    </Nav>;
}
renderItems(){
让{orgs,org_selected,orgs_load}=this.props;
...
返回
{{地图(组织,(组织)=>{
返回org_selected.set(org.id)}>{org.login};
})}
;
}

为什么找不到该变量:箭头函数不保留相同的作用域吗?

您应该检查
this.props的值。确保在
this.props
exist
org\u中选择了


因为,如果问题是在范围中没有选择
org\u
变量,那么这将是一个引用错误,而不是类型错误。由于这是一个类型错误,我们知道
this.props
要么没有选中的
组织
属性,要么有一个值
未定义的

你能检查一下这个.props中的内容吗?您确定所选组织存在吗?在上面,无论是箭头函数还是简单函数都不重要;无论哪种方式,它都是对定义
org\u selected
的上下文的结束。你能做一个完整的,理想情况下是作为一个堆栈片段(按
按钮)吗?@Grundy:你已经把手指放在上面了!如果问题是作用域中没有选择
org\u
变量,则这将是
ReferenceError
,而不是
TypeError
。由于这是一个
类型错误
,我们知道你是对的,
this.props
要么没有选择
org\u
,要么有它,但值
未定义
@t.J.Crowder,所以,这可能是正确的猜测:-),顺便说一句,堆栈中的片段可以使用es6语法和jsx?@Grundy:我想你可以安全地粘贴你的评论,也许有我的一些细节作为答案。由于OP引用了错误消息(是的!),我们知道错误的类型,所以我不认为这是推测。