ReactJS实战之JSX详解(上)

简介: ReactJS实战之JSX详解

创建虚拟DOM元素

  • 什么是虚拟DOM
    用js对象的形式,来表示DOM和DOM之间的嵌套关系。
const mydiv = React. createElement(
  'div', 
  { id: 'mydiv', title: 'div aaa' },
  '这是一 个div元素' 
)

React. createElement

  • 参数1
    创建的元素的类型, 字符串,表示元素的名称
  • 参数2
    一个对象或 null,表示当前这个DOM元素的属性
  • 参数3
    子节点(包括其它虚拟DOM获取文本子节点)
  • 参数
    其它子节点
// 导包
import React from 'react'
import ReactDOM from 'react-dom'
// 创建虚拟 DOM 元素
const mydiv = React.createElement('div',{id:'mydiv', title: 'div aaa'}, '这是一个 div')
// 调用 render 函数渲染
ReactDOM.render(mydiv, document.getElementById('app'))

但如果元素很多,这样写就很不好呢,每次都要创建元素的 API。

毕竟页面上本质都是各种 html 标签,还是直接手写各种标签最简单暴力。

babel

但是HTML是标记语言。JS文件默认不能写这种HTML标记,打包会失败,使用 babel 来转换这些JS中的标签即可!


这种在JS中,混合写入类似于HTML的语法,叫做JSX。

符合 XML规范的JS。JSX 语法的本质,还是在运行的时候,被转换成了React. createElement形式执行。

引入JSX

  • 添加支持

image.png

image.png

  • 插件支持
  • 引入依赖

image.png

React提供的环境搭建工具演示

1.png

image.png

image.png

1.png

image.png

配置文件可读性差,因此不考虑使用这种现成方式写项目,跳过。



观察一下声明的这个变量:

const element = <h1>Hello, world!</h1>;

这种看起来可能有些奇怪的标签语法既不是js 语法也不是 HTML语法,而是能在 js 中使用 html 标签,这被称为 JSX, 一种 JavaScript 的语法扩展。


推荐在 React 中使用 JSX 来描述用户界面。JSX 乍看起来可能比较像是模版语言,但事实上它完全是在 JavaScript 内部实现的。


JSX 用来声明 React 当中的元素。

JSX 的基本使用方法

在 JSX 中使用表达式

可任意地在 JSX 当中使用 JavaScript 表达式,在 JSX 当中的表达式要包含在大括号里

例如 2 + 2user.firstName, 以及 formatName(user) 都是可以使用的

function formatName(user) {
  return user.firstName + ' ' + user.lastName;
}
const user = {
  firstName: 'Harper',
  lastName: 'Perez'
};
const element = (
  <h1>
    Hello, {formatName(user)}!
  </h1>
);
ReactDOM.render(
  element,
  document.getElementById('root')
);

image.png

书写 JSX 的时候一般都会带上换行和缩进,这样可以增强代码的可读性

同样推荐在 JSX 代码的外面扩上一个小括号,这样可以防止 分号自动插入 的 bug

JSX 本身其实也是一种表达式

在编译后,JSX 其实会被转化为普通的 JavaScript 对象

这意味着,你其实可以在 if 或者 for 语句里使用 JSX,将它赋值给变量,当作参数传入,作为返回值都可以

function getGreeting(user) {
  if (user) {
    return <h1>Hello, {formatName(user)}!</h1>;
  }
  return <h1>Hello, Stranger.</h1>;
}
目录
打赏
0
0
0
0
1949
分享
相关文章
说说react 中jsx语法糖的本质?
React 使用 JSX 来替代常规的JavaScript。 JSX 是按照 XML 语法规范 的 JavaScript 语法扩展。 JSX 语法的本质:并不是直接把 JSX 渲染到页面上,而是内部先转换成了 createElement 形式,再渲染的。
141 0
前端项目实战壹佰叁拾react-admin+material ui-react-admin之SelectColumnsButton之使用
前端项目实战壹佰叁拾react-admin+material ui-react-admin之SelectColumnsButton之使用
113 0
前端项目实战伍拾壹​react-admin+material ui-踩坑-创建数据库完数据库表需要重启
前端项目实战伍拾壹​react-admin+material ui-踩坑-创建数据库完数据库表需要重启
139 0
react为什么要使用JSX
react为什么要使用JSX
120 1
【前端】深入了解React JSX语法及实例应用
【前端】深入了解React JSX语法及实例应用
133 0
React源码解析-JSX
React源码解析-JSX
174 1
说说React jsx转换成真实DOM的过程?
说说React jsx转换成真实DOM的过程
123 0
react JSX是什么,作用是什么
react JSX是什么,作用是什么
92 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等