【问题标题】:React arrow function undefined on definition反应箭头函数未定义定义
【发布时间】:2018-08-04 13:02:44
【问题描述】:

我有一个 React 项目。该项目使用默认配置的create-react-app 引导。我在第 60 行的一个类中定义了一个箭头函数:

handleClose = () => {
    this.props.history.push('/');
    window.location.reload();
}

但是在编译的时候,报错了:

你能帮我解决这个问题吗?它说函数本身没有在60 行定义,但我们只在该行定义该函数。请注意,这不是函数调用的问题。编译器对所有定义的箭头函数都给出错误。

【问题讨论】:

  • 你在哪里使用过这个功能?或者你能把你的组件放在这里吗?
  • 我只用this.handleClose这个功能。但是即使我删除了use语句,编译错误仍然存​​在。该错误适用于所有函数定义。 @G_S
  • 发布组件肯定对我们有帮助。 (确保在看到错误之前保存了组件。我通常忘记保存)
  • 发布代码,而不是代码的图片。复制和粘贴错误等,请勿发布它们的图片。更多:meta.stackoverflow.com/q/285551/157247 另外:这还不够上下文;我们无法为您提供我们看不到的代码。请使用 minimal reproducible example 来更新您的问题,以展示问题,最好是使用 Stack Snippets([<>] 工具栏按钮)的 runnable 问题。 Stack Snippets 支持 React,包括 JSX; here's how to do one.
  • 重新编辑:再次:我们需要更多上下文。至少,我们需要查看您收到此错误的代码(引用的代码不是它),但是再次minimal reproducible example 可以帮助我们帮助您。

标签: javascript reactjs arrow-functions


【解决方案1】:

这可能是因为你可能在调用时忘记使用 this.functionName()。

HandleClick = () => (console.log('clicked'));

这就是你可以调用该函数的方式:-

【讨论】:

    【解决方案2】:

    其中一个原因可能是 javascript 中的语法不是默认的。您需要通过安装 stage-0stage-3 预设来手动转译

    npm install --save-dev babel-preset-stage-0
    

    然后在.babelrc文件中设置preset为:

    {
      "presets": ["stage-0"]
    }
    

    您所包含的函数语法是提交给 ECMAScript 但尚未标准化的想法。

    【讨论】:

    • 哦,你又抓到我了。谢谢你会检查更多的错误信息。
    【解决方案3】:

    这可能是上下文问题。您可能必须在构造函数中使用 this.handleClose = this.handleClose.bind(this); 将其绑定到您的类。

    【讨论】:

    • 我错了。箭头函数维护上下文。
    猜你喜欢
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多