React | React的JSX语法(一)

简介: React | React的JSX语法React | React的JSX语法(一)

一、认识JSX语法

认识JSX

07edb2d8f09a47a5a62d4b37cf425fbd.png

这段element变量的声明右侧赋值的标签语法是什么呢?

  • 它不是一段字符串(因为没有使用引号包裹)
  • 它看起来是一段HTML元素,但是我们能在js中直接给一个变量赋值html吗?
  • 不可以,如果我们将type=“text/babel”去除掉,那么就会出现语法错误;
  • 这就是一段jsx语法


JSX是什么?

  • JSX是一种JavaScript的语法拓展(eXtension)也在很多地方称为JavaScript XML因为看起来像一段XML语法
  • 用于描述我们的UI界面,并且他可以可以和JavaScript融合在一起使用
  • 它不同于Vue中的模板语法,你不需要专门学习模板语法中的指令。如v-for,v-if

为什么React选择了JSX

  • React认为渲染逻辑本质上与其他UI逻辑存在内在耦合
  • UI需要绑定事件
  •  UI中需要展示数据状态
  • 在某些状态发生改变时,又需要改变UI


  • 他们之间是密不可分,所以React没有将标记分离到不同的文件中,而是将他们组合在一起,这个地方就是组件(Component)


  • JSX其实就是嵌入到JavaScript中的一种语法;


JSX的书写规范

  • JSX的顶层只能有一个根元素,所以我们很多时候在外层包裹一个div元素(或者Fragment)
  • 为了方便阅读,通常会在jsx的外层包裹一个小括号()并且jsxk有进行换行书写
  • JSX中的标签可以是单标签也可以是双标签
  • 如果是单标签必须以/>结尾

二、JSX的基本使用

JSX的使用

  • jsx中的注释

130cf58274b9461d973bd8053d49141c.png

jsx嵌入变量作为子元素

  • 当变量是Number,String,Array类型时,可以直接展示
  • 当变量是null,undefined,Boolean类型时,内容为空
  • 如果希望可以展示null,undefined,Boolean那么需要转成字符串
  • 如 toString,空字符串拼接,String(变量)等...


  • Object对象类型不能作为子元素(not valid as a React child)


  • jsx嵌入表达式
  • 运算表达式
  • 三元表达式
  • 执行一个函数

17d597aec5694139bf1ac04877a6762e.png

  • jsx绑定属性
  • 如元素都会有 title属性
  • img元素会有 src属性
  • a元素有 href属性
  • 元素需要绑定 class
  • 使用 内联样式style

8ec9766a9ff44911be2dba1d7afaed6b.png

三、JSX的事件绑定

React事件绑定

  • 如果原生DOM原有一个监听事件,如何进行操作?
  • 获取DOM原生,添加监听事件
  • 在HTML原生中,直接绑定onclick


  • 在React中如何操作呢?
  • React事件的命名采用小驼峰,而不是纯小写
  • 我们需要通过{}传入一个事件处理函数,这个函数会在事件发生时被执行;

this的绑定问题

  • 在事件执行后,我们需要获取当前类的对象中相关的属性,这个时候需要用到this
  • 如果直接打印this,会发现它是一个undefined


  • 为什么是undefined?
  • btnClick函数并不是我们主动调用的,而是当button发生改变时,React内部调用了btnClick函数
  • 而它内部调用时,并不知道如何绑定正确的this


  • 解决this问题
  • bind给btnClick显示绑定this
  • 使用ES6 class fields语法
  • 事件监听时传入箭头函数

ae61ed721c2749ef8847d9d0b9898c88.png

7cbe6f98d75e4faca463a0a04fc6efba.png

事件参数传递

  • 在执行事件函数时,我们需要获取一些参数值,如 event对象,其他参数


  • 获取event对象
  • 很多时候我们需要拿到event对象做一些事情(阻止默认行为...)
  • 默认情况下,event对象有被直接传入,函数就可以获取到event对象


  • 获取更多的参数
  • 我们需要获取更多的参数时,我们最好的方式是传入一个箭头函数,主动执行的事件函数,并传入参数

374fe8c695c14ed49bb61a861cf4b415.png

相关文章
|
2月前
|
前端开发 JavaScript
学习react基础(3)_setState、state、jsx、使用ref的几种形式
本文探讨了React中this.setState和this.state的区别,以及React的核心概念,包括核心库的使用、JSX语法、类与函数组件的区别、事件处理和ref的使用。
51 3
学习react基础(3)_setState、state、jsx、使用ref的几种形式
|
3月前
|
XML JavaScript 前端开发
React Jsx语法入门
【8月更文挑战第13天】React Jsx语法入门
41 4
|
8天前
|
XML 前端开发 JavaScript
React JSX
React 使用 JSX(一种类似 XML 的 JavaScript 语法扩展)来替代传统 JavaScript 编写 UI。JSX 使代码更简洁、执行更快且类型安全。例如,`<h1>Hello, world!</h1>` 实际上是创建一个 React 元素,通过 `ReactDOM.render()` 渲染到 DOM。注意,JSX 中使用 `className` 替代 HTML 的 `class` 属性。
|
19天前
|
XML 前端开发 JavaScript
React JSX
10月更文挑战第7天
13 2
|
3月前
|
前端开发 JavaScript 开发者
React 的 ES6 语法与 ES5 相比有何不同?
【8月更文挑战第30天】
56 1
|
3月前
|
前端开发 JavaScript
React Server Component 使用问题之添加jsx的组件化能力,如何操作
React Server Component 使用问题之添加jsx的组件化能力,如何操作
|
3月前
|
前端开发 JavaScript 开发者
React组件与JSX之间的区别是什么
【8月更文挑战第9天】 React组件与JSX之间的区别是什么
60 4
|
3月前
|
XML 前端开发 JavaScript
【React新手必看】JSX,让你的代码舞动起来!
【8月更文挑战第24天】JSX(JavaScript XML)是React开发的核心,作为一种JavaScript语法扩展,它支持在代码中使用类似HTML的标签。JSX并非模板语言,在编译过程中转换为纯JavaScript,使React能高效更新DOM并渲染页面。其优势在于直观性、简洁性和灵活性:简化复杂用户界面构建、减少代码量,并支持HTML标签、React组件及JavaScript变量的表达式插入。基本用法涉及定义组件UI,如创建包含标题和段落的简单组件。
77 0
|
3月前
|
XML 前端开发 JavaScript
React——JSX语法【三】
React——JSX语法【三】
28 0
|
4月前
|
前端开发 JavaScript 算法
react【框架原理详解】JSX 的本质、SyntheticEvent 合成事件机制、组件渲染过程、组件更新过程
react【框架原理详解】JSX 的本质、SyntheticEvent 合成事件机制、组件渲染过程、组件更新过程
66 0