JSX的语法规则

JSX是React为了方便创建虚拟DOM创建的一门新语言,语法类似于HTML,但是稍有区别。

1. JSX基本信息

JSX全称JavaScript XML,一种类似于XML的JS扩展语法(JS+XML)。

其本质是React.createElement(component,props,...children)方法的语法糖。

2. JS表达式

JSX中可以使用JS原生的表达式,例如在JSX语句中插入JS变量:

const data = 'hello react'
const id = 'title'const VDOM = (<h1 id={id}><span>{data}</span></h1>
)

上例中使用{ }包裹JS表达式(这里式变量)实现在JSX中插入JS变量。

执行后的HTML结果如下:

<div id="root"> <!-- react容器 --><h1 id="title"> <!-- 使用JS变量指定的id --><span>hello react</span><!-- 使用JS变量指定的标签内容 --></h1>
</div>

3. className属性

在JSX中不能直接使用class指定标签的属性名,必须使用className

<style>.title {color: aquamarine;}
</style>
<script type="text/babel">const data = 'hello react'const id = 'title'const VDOM = (<h1 id={id} className='title'><!-- className指明类名 --><span>{data}</span></h1>)// 2. 渲染虚拟DOMReactDOM.render(VDOM, document.getElementById('root'))</script>

4. 内联样式

如果需要直接在标签上添加样式,需要使用style={{ ... }}语法:

<script type="text/babel">const data = 'hello react'const id = 'title'const VDOM = (<h1 id={id} ><span style={{ color: 'aquamarine',fontsize:'30px' }}>{data}</span></h1>)// 2. 渲染虚拟DOMReactDOM.render(VDOM, document.getElementById('root'))
</script>

注意: 此处的双花括号{{ ... }}并不是一体的,外侧花括号表示内部是一个JS表达式,内测花括号表示是一个对象,所以style实际上接收的是一个JS对象。

5. 根标签只能有一个

如果存在多个并列的标签,需要在外侧添加一个新的标签包裹。

const VDOM = (// 直接创建两个同层级的标签是错误的// <h1>第一个标签</h1>// <h1>第二个标签</h1>  <div> //外侧包裹一层标签<h1>第一个标签</h1><h1>第二个标签</h1></div>
)

6. 所有标签必须闭合

在React中,所有的标签必须闭合,如果一个标签没有结束标签,可以使用自结束。

在HTML中合法的<input type='text'>是不符合JSX语法的,必须自结束<input type='text' />

<input /> //标签必须自结束
<div></div>

7. 标签的大小写

如果一个标签的 首字母是小写的,JSX会转为对应的HTML标签,如果首字母是大写字母,JSX会认为这个标签是一个React对象。

<xiaoming></xiaoming> //报没有对应标签错误
<Xiaoming></Xiaoming> //报没有对应的组件错误(如果没有定义的话)

03-JSX的语法规则相关推荐

  1. 4、JSX 基本语法规则

    JSX 基本语法规则 上一篇博文稍微说了一下 虚拟DOM 和 真实DOM 的区别,这一篇我们稍微说一下 jsx 的一些语法规则,这个是在开发中经常遇到的,今天稍微过一下. 什么是 JSX JSX 全称 ...

  2. JSX 基本语法规则

    JSX 全称 JavaScript XML,是React 定义的一种类似于 XML 的 JS 扩展语法:JS + XML 本质是 React.createElement(component, prop ...

  3. reactjs jsx语法规则

    jsx语法规则: 1.定义虚拟DOM时,不要写引号. 2.标签中混入JS表达式时要用{}. 3.样式的类名指定不要用class,要用className. 4.内联样式,要用style={{key:va ...

  4. react总结之jsx是什么,jsx语法规则

    文章目录 目录 一.jsx是什么? 二.jsx的优点 三.jsx语法规则 一.jsx是什么? jSX 代表 Javascript XML.它是 Javascript 和 Html 的融合.它是一种类似 ...

  5. 从零开始React:一档 React环境搭建,语法规则,基础使用

    手挽手带你学React入门第一期,带你熟悉React的语法规则,消除对JSX的恐惧感,由于现在开发中都是使用ES6语法开发React,所以这次也使用ES6的模式进行教学,如果大家对ES6不熟悉的话,先 ...

  6. 【JavaSE学习】03面向对象Java语法

    JavaSE(B站黑马)学习笔记 01Java入门 02数组.方法 03面向对象&Java语法 04-1Java高级(Stream流.异常处理.日志技术) 04-2Java高级(文件处理-IO ...

  7. 伪代码(Pseudocode)的语法规则

    伪代码(Pseudocode)是一种算法描述语言.使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现.因此,伪代码必须结构清晰.代码简单.可读性 ...

  8. LLVM一些语法规则

    LLVM一些语法规则 LLVM文档 LLVM编译器基础架构支持广泛的项目,从工业强度编译器到专门的JIT应用程序,再到小型研究项目. 同样,文档分为几个针对不同受众的高级别分组: LLVM设计概述 几 ...

  9. 一文详解CMakeLists文件编写语法规则详解

    作者丨zhanghm1995@blog 来源丨https://blog.csdn.net/zhanghm1995/article/details/80902807 编辑丨3D视觉工坊 基本语法规则 C ...

最新文章

  1. JavaWeb实现分页的四种方法
  2. 【数据库】MySQL乱码解决(存入数据乱码和查询输出乱码)
  3. 那些年,面试被虐过的红黑树 1
  4. 蓝桥杯-算法训练 2的次幂表示
  5. Python 官网宣布,正式发布 Python 3.8.0!
  6. ssl1125-集合【哈希表二分查找+快排】
  7. 金蝶服务器删除缓存文件,金蝶KIS专业版卸载不干净导致无法安装之解决办法
  8. 用Unity开发AR创意礼物:会动的照片
  9. 电脑安装ubuntu linux操作系统
  10. 终于找全啦!一二线城市知名互联网公司名单!对着找就对了...
  11. iPhone应用程序的启动过程
  12. 华为oj c语言 dna序列,(华为OJ)C 语言—计算字符串的距离(动态规划算法)
  13. 使用 Google Analytics 的网址构建器来监控广告投放
  14. Flash视频播放器
  15. 云存储可靠性的计算方法
  16. NMS中的 offset by class 是什么意思?
  17. matlab设置中英文混合字体,word排版技巧:如何分别设置中英文混排的字体
  18. Spark GraphX下强连通子图和社团发现算法在1T TPC-DS数据集下执行方法、优化和性能估算
  19. Ubuntu Kylin系统中配置Apache服务器
  20. Linux 网络适配,ping命令,更改自己的IP地址

热门文章

  1. 如何为WordPress的网站建立多级菜单?
  2. MATLAB中sin(i)求和
  3. 测试UDP端口的方法
  4. Chrome浏览器访问任何服务器资源,解决Origin 'null' is therefore not allowed access.错误
  5. 如何开始编写微信小程序
  6. java 之file文件/目录创建
  7. 全方位的技术服务及相关技术解决方案(纯java解决方案)
  8. 高斯消去法解线性方程组的fortran程序实现
  9. sat2 计算机科目,sat2
  10. php的 empty()