Turn JSX into React function calls
In
var profile = <div>
<img src="avatar.png" className="profile" />
<h3>{[user.firstName, user.lastName].join(' ')}</h3>
</div>;
Out
var profile = React.createElement("div", null,
React.createElement("img", { src: "avatar.png", className: "profile" }),
React.createElement("h3", null, [user.firstName, user.lastName].join(" "))
);
In
/** @jsx dom */
var { dom } = require("deku");
var profile = <div>
<img src="avatar.png" className="profile" />
<h3>{[user.firstName, user.lastName].join(' ')}</h3>
</div>;
Out
/** @jsx dom */
var dom = require("deku").dom;
var profile = dom( "div", null,
dom("img", { src: "avatar.png", className: "profile" }),
dom("h3", null, [user.firstName, user.lastName].join(" "))
);
npm install --save-dev babel-plugin-transform-react-jsx
.babelrc
// without options
{
"plugins": ["transform-react-jsx"]
}
// with options
{
"plugins": [
["transform-react-jsx", {
"pragma": "dom" // default pragma is React.createElement
}]
]
}
babel --plugins transform-react-jsx script.js
require("babel-core").transform("code", {
plugins: ["transform-react-jsx"]
});
pragma
- Replace the function used when compiling JSX expressions (Defaults toReact.createElement
).- Note that the
@jsx React.DOM
pragma has been deprecated as of React v0.12
- Note that the
useBuiltIns
- When spreading props, use Object.assign instead of Babel's extend helper (Disabled by default).