jsx转换过程及本质
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>jsx转换过程</title>
</head>
<body>
<div id="root"></div>
<script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script type="text/babel">
class App extends React.Component {
constructor() {
super();
this.state = {
name: "zm",
};
}
render() {
return (
<div>
<div className="top">top</div>
<div className="body">
<div>{this.state.name}</div>
<ul>
<li>list data1</li>
<li>list data2</li>
<li>list data3</li>
<li>list data4</li>
<li>list data5</li>
</ul>
</div>
<div className="bottom">bottom</div>
</div>
);
}
}
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(<App />);
</script>
</body>
</html>
jsx转换过程-原生React
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>jsx转换过程-原生React</title>
</head>
<body>
<div id="root"></div>
<script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
<script>
class App extends React.Component {
constructor() {
super();
this.state = {};
}
render() {
return React.createElement(
"div",
null,
React.createElement(
"div",
{
className: "top",
},
"top"
),
React.createElement(
"div",
{
className: "body",
},
React.createElement("div", null, this.state.name),
React.createElement(
"ul",
null,
React.createElement("li", null, "list data1"),
React.createElement("li", null, "list data2"),
React.createElement("li", null, "list data3"),
React.createElement("li", null, "list data4"),
React.createElement("li", null, "list data5")
)
),
React.createElement(
"div",
{
className: "bottom",
},
"bottom"
)
);
}
}
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(React.createElement(App, null));
</script>
</body>
</html>