React 组件中的意外标记“=”

IT技术 reactjs babeljs
2021-04-14 01:50:21

我可能缺少装载机吗?我认为我们应该能够在组件主体中使用这些 ES6 函数,以避免必须执行.bind(this)语法react docs

    ERROR in ./client/admin-side/components/Form.jsx
Module build failed: SyntaxError: Unexpected token (15:17)

  14 | 
> 15 |     handleChange = (event) => {
     |                  ^
  16 |         this.setState({value: event.target.value})
  17 |     }

我的 .babelrc 有以下内容:

{
    "presets": ["env", "react"],
    "plugins": ["transform-object-rest-spread"]
}

babel-loader用于 js/jsx 文档

2个回答

您需要transform-class-properties plugin使用类字段,您可以像这样安装它

npm install --save-dev babel-plugin-transform-class-properties

并将其用作插件

{
    "presets": ["env", "react"],
    "plugins": ["transform-object-rest-spread", "transform-class-properties"]
}   

transform-object-rest-spread 用于其余的传播语法,就像

const {a, b, ...rest} = this.props

根据文档

这提出了两个相关的建议:"class instance fields""class static fields"

"Class instance fields" 描述旨在存在于类实例上的属性(并且可以选择包含所述属性的初始化表达式)。

"Class static fields" 是存在于类对象本身上的声明性属性(并且可以选择包含所述属性的初始化表达式)。

该提案目前处于第 2 阶段

您也可以通过安装使用预设 stage-2 来解决此问题

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

并使用它

{
    "presets": ["env", "react", "stage-2"],
    "plugins": ["transform-object-rest-spread"]
} 
感谢您今天的帮助 Shubham!XD 试图弄清楚这个 React 的事情!
2021-05-26 01:50:21

你不能添加 stage-0 预设

{
    "presets": ["env", "react", "stage-0"],
    "plugins": ["transform-object-rest-spread"]
}

不要忘记跑步

yarn add babel-preset-stage-0