【发布时间】:2015-12-14 13:37:44
【问题描述】:
错误(通过选择菜单项触发):
TypeError: org_selected 未定义
为以下 sn-p 返回:
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>;
}
为什么找不到那个变量:箭头函数不保持相同的范围吗?
【问题讨论】:
-
你能检查一下 this.props 中的内容吗?你确定 org_selected 存在吗?
-
在上面,不管是箭头函数还是简单函数;无论哪种方式,它都是定义
org_selected的上下文的闭包。你能做一个完整的MCVE,最好是作为堆栈片段(<>按钮)? -
@Grundy:你已经把手指放在上面了!如果问题是范围内没有
org_selected变量,那么它将是ReferenceError,而不是TypeError。因为它是TypeError,所以我们知道你是对的,this.props要么没有org_selected,要么有但值undefined。 -
@T.J.Crowder,所以,这似乎是正确的猜测:-),顺便说一句,在 Stack Snippet 中可以使用 es6 语法和 jsx?
-
@Grundy:我认为您可以安全地粘贴您的评论,也许还有我的一些细节,作为答案。感谢 OP 引用了错误消息(是的!),我们知道错误的类型,所以我不认为这是推测性的。
标签: javascript ecmascript-6 react-jsx