【问题标题】:ESLint eslint-plugin-react arrow functionsESLint eslint-plugin-react 箭头函数
【发布时间】:2017-09-13 03:30:12
【问题描述】:

我在使用 eslint-plugin-react 插件的反应组件中遇到了一些 ESLint 和箭头函数问题。我刚刚做了这些命令:

  1. npm i -g eslint eslint-plugin-react
  2. eslint SignUpPage.jsx

这里是注册页面:

/**
 * Created by jwilso37 on 4/5/2017.
 */

import React from 'react';
import SignUpForm from '../components/landing/SignUpForm.jsx';
import 'whatwg-fetch'


class SignUpPage extends React.Component {

    constructor(props) {
        super(props);

        this.state = {
            errors: {},
            user: {
                email: '',
                name: '',
                password: ''
            }
        };
    }

    /**
     * Change the user object.
     *
     * @param {object} e - the JavaScript event object
     */

    changeUser = (e) => {
        const field = e.target.name;
        const user = this.state.user;
        user[field] = e.target.value;

        this.setState({
            user
        });
    };

    /**
     * Handles processForm event and submits request to server.
     * @param e
     */
    processForm = (e) => {
        e.preventDefault();
        const form = document.querySelector('form');
        const formData = new FormData(form);

        fetch('/api/signup', {
            method: 'POST',
            body: formData
        }).then(response => {
            if (response.ok) {
                this.setState({
                    errors: {}
                });
            }
            else {
                // returned > 300 status code
                response.json().then(j => {
                    const errors = j.errors ? j.errors : {};
                    errors.summary = j.message;
                    this.setState({
                        errors: errors
                    })
                })
            }
        })
    };


    /**
     * Render the component.
     */
    render() {
        return (
            <SignUpForm
                onSubmit={this.processForm}
                onChange={this.changeUser}
                errors={this.state.errors}
                user={this.state.user}
            />
        );
    }

}

export default SignUpPage;

但是 eslint 的输出奇怪的是这样的:

ubuntu@ETFly:/vagrant/client/src/containers$ eslint signuppage.jsx

/vagrant/client/src/containers/signuppage.jsx
  31:16  error  Parsing error: Unexpected token =

changeUser匿名函数上的=标志是错误的?这是我的.eslintrc.json

{
  "plugins": [
    "react"
  ],
  "settings": {
    "react": {
      "createClass": "createClass", // Regex for Component Factory to use, default to "createClass"
      "pragma": "React",  // Pragma to use, default to "React"
      "version": "15.0" // React version, default to the latest React stable release
    }
  },
  "parserOptions": {
    "sourceType": "module",
    "ecmaVersion": 6,
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "extends": ["eslint:recommended", "plugin:react/recommended"],
  "env": {
    "browser": true
  }
}

【问题讨论】:

  • 你是对的,这是有效的语法。我已经删除了我的答案

标签: javascript reactjs npm react-jsx eslint


【解决方案1】:

好的,我似乎已经修复了它。在我意识到我的 JSX 扩展运算符不能正常工作后,我安装了 babel-eslintnpm i --save-dev babel-eslint。这让我觉得所有 ES6 的东西都搞砸了。所以现在我刚刚添加了babel-eslint 解析器,并将"parser": "babel-eslint" 添加到我的.eslintrc.json 文件的末尾,一切都很好!我猜默认的 eslint 解析器不支持这些功能……

【讨论】:

  • 真的很有效,我做了一些更改以提高阅读您的分辨率
猜你喜欢
  • 2016-05-27
  • 2018-04-21
  • 1970-01-01
  • 2019-01-10
  • 2016-10-01
  • 2018-07-04
  • 2020-07-30
  • 1970-01-01
  • 2018-09-14
相关资源
最近更新 更多