运行JSX代码(ReactJS)是否需要Babel Transpile?

时间:2018-09-29 15:09:19

标签: javascript reactjs jsx babel

我正在看一年前写的一些代码,对于所有项目,我在运行index.js时都会出错(在Atom中,使用“脚本”包)。我完全忘记了那时我是如何运行这些项目的,从那以后就再也没有做过任何编程(使用React)。为了运行任何JSX代码,是否需要使用babel转换此代码?

enter image description here

/ src中的

index.js:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';

ReactDOM.render(<App />, document.getElementById('root'));
registerServiceWorker();

package.json:

{
  "name": "jammming",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^15.6.1",
    "react-dom": "^15.6.1",
    "react-scripts": "1.0.11"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}

这是为什么以及如何解决?

1 个答案:

答案 0 :(得分:1)

是的,JSX不是标准语法,它是React.createElement的语法糖。
您可以使用babel-plugin-transform-react-jsx

var profile = <div>
  <img src="avatar.png" className="profile" />
  <h3>{[user.firstName, user.lastName].join(' ')}</h3>
</div>;

var profile = React.createElement("div", null,
  React.createElement("img", { src: "avatar.png", className: "profile" }),
  React.createElement("h3", null, [user.firstName, user.lastName].join(" "))
);