【问题标题】:Babel transpile required to run JSX code (ReactJS)?运行 JSX 代码(ReactJS)需要 Babel transpile?
【发布时间】:2019-03-05 07:09:00
【问题描述】:

我正在查看我一年前编写的一些代码,对于所有项目,我在运行 index.js(在 Atom 中,使用“脚本”包)时遇到错误。我完全忘记了我当时是如何运行这些项目的,并且从那时起就没有做过任何编程(使用 React)。是否需要使用 babel 转译此代码才能运行任何 JSX 代码?

/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"
  }
}

为什么会这样以及如何解决?

【问题讨论】:

    标签: javascript reactjs jsx babeljs


    【解决方案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(" "))
    );
    

    【讨论】:

    • 谢谢,很高兴知道!因为我很确定我没有为此使用 babel 转译,然后我进一步搜索并发现当时我使用命令 npm start 在浏览器中打开了应用程序(由于进入,它运行命令'react-scripts start' package.json) 并在浏览器中打开应用程序(在 'localhost:3000 上)。显然 react-scripts 包也以某种方式处理 JSX 代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    相关资源
    最近更新 更多