react jsx初探

简介: jsx 也可以使用表达式,像在vue的 {{ }} 中一样,可以写表达式,在jsx 的语法是 { }这个里面写表达式

什么是JSX


  • Facebook起草的JS扩展语法,被正式收录了
  • 本质是一个JS对象,需要通过babel编译,最终会被转换为React.createElement


20210207103518919.png

20210207103544652.png


语法


 在react 项目中,直接建立 .jsx 或者 .tsx 后缀的文件名,里面就可以书写jsx 的代码
 标准:
  直接定义一个变量,里面的变量的值是一个标签。 绑定参数使用 {} 进行绑定
  如:
  const pCon = '我是p标签'
  const h1Dom: JSX.Element = (
    <>
      <h1>我是h1</h1><p>{pCon}</p>
    </>
  );


效果:


20210207104735323.png


语法注意事项


  • 每个JSX表达式,有且仅有一个根节点,如果需要使用多个根节点,有以下两种做法:


20210207104030144.png


。外层套一个标签


20210207104105887.png


。React.Fragment:使用react的片段标签


20210207104249197.png


  • 每个JSX元素必须结束(XML规范)


我们在html中,img, input 等标签可以不需要使用结束标签,但是在jsx 中是需要使用闭合标签的,不然会报错,如下


20210207105753356.png


两种方式是标签的闭合的两种方式,如下:


20210207110000543.png


在JSX中嵌入表达式


jsx 也可以使用表达式,像在vue的 {{ }} 中一样,可以写表达式,在jsx 的语法是 { }这个里面写表达式


  • 在JSX中使用注释: 使用 {/* 这是注释 */},window 下面使用 ctrl + l 可以打出:


20210207110237761.png

20210207110324904.png


  • 将表达式作为内容的一部分


20210207110736586.png


。null、undefined、false不会显示,不是说在js 中非空的值不显示哦


2021020711112460.png

20210207111148691.png


。处理对象,普通对象,不可以作为子元素,可以放置React元素对象


普通对象:


20210207111538741.png


React元素对象:


20210207111704188.png

20210207111812567.png


。处理数组,数组都可以放置到页面中


2021020711193970.png

20210207112004858.png


  • 将表达式作为元素属性


如果大家学过vue 的话,绑定元素的属性是通过 :属性名来进行绑定的,但是jsx 中绑定属性是通 属性名={ }来进行绑定


20210207112507239.png

20210207112547752.png


  • 属性使用小驼峰命名法:jsx 中的class属性是关键字,需要使用className来代替


20210207112657490.png

20210207112719878.png


  • 防止注入攻击:主要是防止<script>标签里面做一些js 脚本的攻击


。对敏感的<>自动编码


2021020711313853.png


。dangerouslySetInnerHTML:标记需要使用页面,类似于vue的 v-html指令


20210207115900230.png

20210207115943642.png


元素的不可变性


  • 虽然JSX元素是一个对象,但是该对象中的所有属性不可更改


20210207125658826.png

20210207125713131.png


  • 如果确实需要更改元素的属性,需要重新创建JSX元素,从新reader 节点


这里可能大家会觉得,这么做很浪费性能,但是react 的dom 操作的是react 自己创建出来的虚拟dom, 不会导致浏览器的重绘和重排

相关文章
|
7月前
|
前端开发 JavaScript 开发者
React:JSX语法入门
React:JSX语法入门
95 0
|
29天前
|
XML 前端开发 JavaScript
react之了解jsx
react之了解jsx
|
3月前
|
前端开发 JavaScript
学习react基础(3)_setState、state、jsx、使用ref的几种形式
本文探讨了React中this.setState和this.state的区别,以及React的核心概念,包括核心库的使用、JSX语法、类与函数组件的区别、事件处理和ref的使用。
76 3
学习react基础(3)_setState、state、jsx、使用ref的几种形式
|
4月前
|
XML JavaScript 前端开发
React Jsx语法入门
【8月更文挑战第13天】React Jsx语法入门
46 4
|
29天前
|
JavaScript 前端开发 容器
React零基础入门02--JSX语法基础
React零基础入门02--JSX语法基础
React零基础入门02--JSX语法基础
|
2月前
|
XML 前端开发 JavaScript
React JSX
React 使用 JSX(一种类似 XML 的 JavaScript 语法扩展)来替代传统 JavaScript 编写 UI。JSX 使代码更简洁、执行更快且类型安全。例如,`&lt;h1&gt;Hello, world!&lt;/h1&gt;` 实际上是创建一个 React 元素,通过 `ReactDOM.render()` 渲染到 DOM。注意,JSX 中使用 `className` 替代 HTML 的 `class` 属性。
|
29天前
|
存储 前端开发 JavaScript
react之jsx编译原理
react之jsx编译原理
|
2月前
|
XML 前端开发 JavaScript
React JSX
10月更文挑战第7天
16 2
|
4月前
|
前端开发 JavaScript
React Server Component 使用问题之添加jsx的组件化能力,如何操作
React Server Component 使用问题之添加jsx的组件化能力,如何操作
|
4月前
|
前端开发 JavaScript 开发者
React组件与JSX之间的区别是什么
【8月更文挑战第9天】 React组件与JSX之间的区别是什么
68 4