ECMAScript 5 - 错误缺少类属性转换

时间:2016-09-19 22:17:31

标签: javascript reactjs ecmascript-6 babeljs es6-class

我正在实施Class extend,我收到此错误缺少类属性转换

组件

import React from ('react')

const Manna = React.createClass({,

  initVal: {
       likes: 10,
   }

   render() {
     // code
      return {
        // code
      }

   }

});

module.exports = Manna 

并改为

import React from 'react';

export default class Manna extends React.Component {

  InitVal: {
    likes: 10
  }

  render() {
     // code
    return {
       // code
    }

  }

};

这是我在webpack.config.dev.js中的配置

{
  test: /\.js$/,
  loaders: 'babel?presets[]=react,presets[]=es2015,presets[]=stage-0',
  include: path.join(__dirname, 'client')
},

我已按照此answer

更改了加载程序

之前loaders: ['babel']

我还在.babelrc中添加了插件

["transform-class-properties"],

这是控制台中的错误

 Missing class properties transform.
  15 |   // },
  16 | 
> 17 |   InitVal: {
     |   ^
  18 |     likes: 10,
  19 |     code: "2",
  20 |     size: 350,

我不明白为什么它现在抱怨缺少类属性转换,组件有什么问题?在这些更改之前一切正常工作

这里有一个gist,其中包含完整的React组件

1 个答案:

答案 0 :(得分:1)

尝试使用 =

import React from 'react';

export default class Manna extends React.Component {

  InitVal = {
    likes: 10
  }

  render() {
     // code
    return {
       // code
    }

  }

};

检查this

<强>更新

由于我们使用的stage-0transform-class-properties已包含在stage-2中,因此我们不必在.babelrc plugins下手动将其包含在"presets": ["es2015", "stage-0", "react"]中。以下配置工作正常:InitVal

5 i行的要点上写着大写i,而在39行写的是小写initVal:{{1 }}。此外,render方法返回一个无效的Object Literal,它将按照here的说明返回一个子元素。

Here是定义为es6类的反应组件的官方文档。