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
existorg\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引用了错误消息(是的!),我们知道错误的类型,所以我不认为这是推测。