Javascript 使用Babel仅转换jsx

Javascript 使用Babel仅转换jsx,javascript,reactjs,jsx,babeljs,Javascript,Reactjs,Jsx,Babeljs,我正在使用Babel和React js。 问题是我不想把es6转换成es5。我想继续使用es6。 我只需要将jsx转换为js。 这是我的宝贝 { "plugins": ["transform-react-jsx"] } 这是我的代码: import React from "react"; /****** Header *******/ export class Header extends React.Component { onSubmit = (e) => {

我正在使用Babel和React js。 问题是我不想把es6转换成es5。我想继续使用es6。 我只需要将jsx转换为js。 这是我的宝贝

{
  "plugins": ["transform-react-jsx"]
}
这是我的代码:

import React from "react";

/****** Header *******/
export class Header extends React.Component {
    onSubmit = (e) => {
        e.preventDefault();
        console.log('Submitting');
        const errors = this.validate();

        if (Object.keys(errors).length === 0) {
            this.setState({ loading: true });
            fetch(this.props.action, {
                method: 'POST',
                body: JSON.stringify(this.state.data),
                headers: new Headers({
                    'Content-Type': 'application/json'
                }),
                credentials: 'same-origin'
            }).then(res => res.json())
                .catch(error => console.error('Error:', error))
                .then(response => console.log('Success:', response));
        }
    };

    render() {
        return (
            <div>
                <a href={this.props.homeUrl}><img src={this.props.logoUrl} /></a>
                <div><span>Hello {this.props.userName}</span></div>
                <button onclick={this.onSubmit(e).bind(this)}>Click me</button>
            </div>
        );
    }
}
它向我展示了es6代码行的语法错误,所以我认为Babel仍然需要将es6转换为es5

安装“transform class properties”后,会显示另一条错误消息:

SyntaxError: components/Form.js: Unexpected token (55:12)
  53 |     getFieldValue(e) {
  54 |         this.setState({
> 55 |             ...this.state,
     |             ^
  56 |             data: {
  57 |                 ...this.state.data,
  58 |                 [e.target.name]: e.target.value
你知道有什么办法吗?仅将JSX转换为JS


非常感谢您的支持

这取决于您使用的浏览器如果该浏览器不支持所有es6功能或某些功能,那么这些错误是令人担忧的

您使用的是类属性语法,例如
someVar=()=>{}

jsx插件不会对其进行转换。您需要为所有这些仍然是建议的高级功能添加插件

下面是用于类属性的babel插件:


本质上,它只会转换您提供给它的插件,但浏览器中还不支持类属性,更不用说节点了。

支持es6。使用预设。了解巴贝尔更多发布您的jsx代码,它是功能性的还是类组件?我已经更新了我的代码和错误消息。谢谢这里没有浏览器,在我运行babel命令babel命令后,终端上显示的错误消息?你能告诉babel命令和你运行的浏览器感谢3stacks,它在我安装插件后工作。但我也使用了很多es6语法,比如箭头函数、spread等等。我需要安装所有es6->es5转换器插件。这意味着我仍然需要将es6转换为es5
SyntaxError: components/Form.js: Unexpected token (55:12)
  53 |     getFieldValue(e) {
  54 |         this.setState({
> 55 |             ...this.state,
     |             ^
  56 |             data: {
  57 |                 ...this.state.data,
  58 |                 [e.target.name]: e.target.value