React-JSX写法
通过createElement创建元素存在的问题,如果结构比较简单还好,但是如果结构比较复杂,就比较难以下手,所以大牛们就发明了JSX
,专门用来编写React中的页面结构体的。
JSX === JavaScript + X === (XML) === (eXtension)
,JSX是一个看起来很像 XML 的 JavaScript 语法扩展。
为什么要使用 JSX
使用JSX使得我们在React中编写页面结构更为简单、灵活,JSX 是类型安全的,在编译过程中就能发现错误,JSX 执行更快,因为它在编译为 JavaScript 代码后进行了优化,可以防止XSS注入攻击。
官方文档
JSX 的本质
浏览器只认识JS不认识JSX, 所以我们编写的JSX代码是无法在浏览器中执行的,为了解决这个问题, 我们需要借助babel
将JSX转换成JS, 也就是转换成React.createElement()。
https://zh-hans.reactjs.org/docs/react-without-jsx.html
https://babeljs.io/repl/
在项目中将 JSX 转换成 JS
导入babel.js
在script标签上添加type="text/babel"
改造之前写的案例的代码,改成JSX写法如下所示:
<!doctype html><html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="React/react.development.v17.js"></script>
<script src="React/react-dom.development.v17.js"></script>
<script src="React/babel.min.js"></script>
</head>
<body>
<div ></div>
<script type="text/babel">
// 1.创建虚拟DOM
let message = 'BNTang';
function myRender() {
let oRoot = (
<div>
<div>{message}</div>
<button onClick={myFn}>按钮</button>
</div>
)
ReactDOM.render(oRoot, document.getElementById('app'), () => {
console.log('已经将虚拟DOM转换成了真实DOM, 已经渲染到界面上了');
});
}
myRender();
function myFn() {
message = 'www.it6666.top';
myRender();
}
</script>
</body>
</html>
以上是 React-JSX写法 的全部内容, 来源链接: utcz.com/z/381204.html