React-JSX写法

react

通过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

回到顶部