【问题标题】:Variable not found in arrow function在箭头函数中找不到变量
【发布时间】: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,最好是作为堆栈片段(&lt;&gt; 按钮)?
  • @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


【解决方案1】:

您应该检查this.props 的值。确保this.props 中存在org_selected。

作为T.J. pointed out,如果问题是范围内没有org_selected 变量,那将是ReferenceError,而不是TypeError。由于它是一个TypeError,我们知道this.props 要么没有org_selected 属性,要么有一个值为undefined 的属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多