我正在看一年前写的一些代码,对于所有项目,我在运行index.js时都会出错(在Atom中,使用“脚本”包)。我完全忘记了那时我是如何运行这些项目的,从那以后就再也没有做过任何编程(使用React)。为了运行任何JSX代码,是否需要使用babel转换此代码?
/ 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"
}
}
这是为什么以及如何解决?
答案 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(" "))
);