首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails Webpacker和stage-2类转换属性不起作用

Rails Webpacker和stage-2类转换属性不起作用
EN

Stack Overflow用户
提问于 2017-03-29 00:10:57
回答 2查看 576关注 0票数 1

我正在一个新的Rails应用程序上试用Webpacker来熟悉它,但我无法让它编译我的javascript代码。

下面是代码:

代码语言:javascript
复制
import React, { Component, PropTypes } from 'react'
import DayPicker, { DateUtils } from 'react-day-picker'
import 'react-day-picker/lib/style.css'

export default class Example extends Component {
  constructor(props) {
    super(props)
    this.state = {
      selectedDays: []
    }
  }

  handleDayClick = (day, selected) => {
    console.log(day)
  }

  render() {
    return (
      <p>Test</p>
    )
  }
}

20:05:21 hot.1  | ERROR in ./app/javascript/packs/components/example/example.jsx
20:05:21 hot.1  | Module build failed: SyntaxError: Missing class properties transform.
20:05:21 hot.1  |
20:05:21 hot.1  |   11 |   }
20:05:21 hot.1  |   12 |
20:05:21 hot.1  | > 13 |   handleDayClick = (day, selected) => {
20:05:21 hot.1  |      |   ^

这是在一个全新的Rails应用上使用最新的github网站创业板。

我的.babelrc

代码语言:javascript
复制
{
  "presets": ["env", "es2015", "react", "stage-2"]
}

我的devDependencies是:

代码语言:javascript
复制
"devDependencies": {
  "babel-preset-es2015": "^6.24.0",
  "babel-preset-stage-2": "^6.22.0",
  "webpack-dev-server": "^2.4.2"
}

根据这个Babel REPL链接,这应该是可行的。https://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=es2015%2Creact%2Cstage-2&targets=&browsers=&builtIns=false&experimental=true&loose=false&spec=false&code=class%20PostInfo%20extends%20React.Component%20%7B%0A%09handleOptionsButtonClick%20%3D%20(e)%20%3D%3E%20%7B%0A%20%20%20%20this.setState(%7BshowOptionsModal%3A%20true%7D)%3B%0A%20%20%7D%0A%7D

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2017-03-29 02:04:56

要解决这个问题,我必须将预置添加到单个加载程序文件中,特别是。

代码语言:javascript
复制
// config/webpack/loaders/babel.js
module.exports = {
  test: /\.js(\.erb)?$/,
  exclude: /node_modules/,
  loader: 'babel-loader',
  options: {
    presets: [
      'es2015',
      'stage-2'
    ]
  }
}

// config/webpack/loaders/react.js
module.exports = {
  test: /\.(js|jsx)?(\.erb)?$/,
  exclude: /node_modules/,
  loader: 'babel-loader',
  options: {
    presets: [
      'es2015',
      'react',
      'stage-2'
    ]
  }
}

现在我可以使用漂亮的速记箭头类函数。

票数 1
EN

Stack Overflow用户

发布于 2017-03-29 00:32:24

您的评论非常有启发性:这是类中的方法声明;不应该有等号或胖箭头。它应该是这样的:

代码语言:javascript
复制
handleDayClick (day, selected) {
    console.log(day)
}

看看constructorrender方法的外观;这就是react组件中所有方法的外观。

哦哦!

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43082068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档