【React】在React中 JSX 代码如何转成 JS 代码?
一、介绍
写 React 代码的朋友应该都是直接写 JSX 代码,JSX 让我们可以在 JS 中直接写 HTML 代码,可阅读性较高。本章节主要介绍 JSX 通过 babel 转换后会生成什么样式代码。
二、案例
- div 标签
<div></div>
通过 babel 转换后:
React.createElement("div", null);
- 带 id 属性的 div 标签
<div id="leo">pingan</div>
通过 babel 转换后:
React.createElement("div", { id: "leo" }, "pingan");
- 带有单个子元素的 div 标签
<div id="leo" key="index">
<span>hello</span>
</div>
通过 babel 转换后:
React.createElement("div", {
id: "leo",
key: "index"
}, React.createElement("span", null, "hello"));
- 带有多个子元素的 div 标签
<div id="leo" key="index">
<span>hello</span>
<span>hello</span>
</div>
通过 babel 转换后:
React.createElement("div", {
id: "leo",
key: "index"
}, React.createElement("span", null, "hello"),
React.createElement("span", null, "hello")
);
- 函数组件
function Leo (){
return <span>hi leo!</span>
}
<Leo></Leo>
通过 babel 转换后:
function Leo() {
return React.createElement("span", null, "hi leo!");
}
React.createElement(Leo, null);
需要特别注意的是:
在写 React 组件时,约定组件名称首字母必须是大写。React.createElement 方法会根据第一个参数的首字母是否是大写,来判断要翻译成变量还是字符串。
当我们组件首字母为小写时:
function leo (){
return <span>hi leo!</span>
}
<leo></leo>
通过 babel 转换后:
function leo() {
return React.createElement("span", null, "hi leo!");
}
React.createElement("leo", null);
可以看出,React.createElement 第一个参数变为字符串 "leo" 。对于 React 来说,第一个参数如果是字符串类型,则会被作为 HTML 原生 DOM 节点来渲染,运行时便会报错。
关于我
本文首发在 pingan8787个人博客,如需转载请保留个人介绍。
| Author | 王平安 |
|---|---|
| pingan8787@qq.com | |
| 博 客 | www.pingan8787.com |
| 微 信 | pingan8787 |
| 每日文章推荐 | https://github.com/pingan8787/Leo_Reading/issues |
| ES小册 | js.pingan8787.com |
微信公众号
【React】在React中 JSX 代码如何转成 JS 代码?的更多相关文章
- m_Orchestrate learning system---三十五、php数据和js数据的解耦:php数据(php代码)不要放到js代码中
m_Orchestrate learning system---三十五.php数据和js数据的解耦:php数据(php代码)不要放到js代码中 一.总结 一句话总结:也就是以html为中介,用html ...
- 代码备份 | 博客侧边栏公告(支持HTML代码)(支持JS代码)
博客侧边栏公告(支持HTML代码)(支持JS代码) <div id='btnList'> <a class="ivu-btn ivu-btn-primary" h ...
- 四十年前的 6502 CPU 指令翻译成 JS 代码会是怎样
去年折腾的一个东西,之前 blog 里也写过,不过那时边琢磨边写,所以比较杂乱,现在简单完整地讲解一下. 前言 当时看到一本虚拟机相关的书,正好又在想 JS 混淆相关的事,无意中冒出个问题:能不能把某 ...
- 网页中嵌入可以点击“运行代码”执行html/css/js代码
html代码 <textarea name="textarea" cols="60" rows="10" id="rn01& ...
- java代码将excel文件中的内容列表转换成JS文件输出
思路分析 我们想要把excel文件中的内容转为其他形式的文件输出,肯定需要分两步走: 1.把excel文件中的内容读出来: 2.将内容写到新的文件中. 举例 一张excel表中有一个表格: 我们需要将 ...
- 站长常用的200个js代码 站长常用js代码大全 站长常用js代码集合
站长常用的200个js代码 1.文本框焦点问题 onBlur:当失去输入焦点后产生该事件 onFocus:当输入获得焦点后,产生该文件 Onchange:当文字值改变时,产生该事件 Onselect: ...
- 直接在浏览器运行jsx及高版本的js代码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- 在谷歌中缓存下载视频离线观看,js代码
var download=function(urlInfo) { when(createFile(localFileName)) .then(function (fileInfo) { var dow ...
- Vue项目中导入excel文件读取成js数组
1. 安装组件 cnpm install xlsx --save 2. 代码 <template> <span> <input class="input-fil ...
随机推荐
- nyoj 163 Phone List(动态字典树<trie>) poj Phone List (静态字典树<trie>)
Phone List 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Given a list of phone numbers, determine if it i ...
- hdu 2063 过山车 (二分图,最大匹配)
过山车Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- XjhDemo 插入数据
create database XjhDemo gouse XjhDemogo --商品类别Create table Sort( SortId int primary key identity(1,1 ...
- LVM弹性硬盘
LVM机制的基本概念 PV(物理卷) ----由多个pe组成 VG(卷组) LV(逻辑卷) 基本命令: 如: 服务器新增一块大小为1T的SCSI的硬盘(sdb) ,创建一个名字为(ceshi)的逻辑分 ...
- 扛把子组20191017-5 alpha week 2/2 Scrum立会报告+燃尽图 04
此作业要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/9801] 一.小组情况 队名:扛把子 组长:迟俊文 组员:宋晓丽 梁梦瑶 ...
- springboot+swagger接口文档企业实践(下)
目录 1.引言 2. swagger接口过滤 2.1 按包过滤(package) 2.2 按类注解过滤 2.3 按方法注解过滤 2.4 按分组过滤 2.4.1 定义注解ApiVersion 2.4.2 ...
- 每天复现一个漏洞--vulhub
phpmyadmin scripts/setup.php 反序列化漏洞(WooYun-2016-199433) 漏洞原理:http://www.polaris-lab.com/index.php/ar ...
- 【Luogu P3379】LCA问题的倍增解法
Luogu P3379 题意:对于两个节点,寻找他们的最近公共祖先. 一个显而易见的解法是对于每一个节点我们都往上遍历一遍,记录下它每一个祖先,然后再从另一个节点出发,一步一步往上走,找到以前记录过第 ...
- Flask入门学习——自定义一个url转换器
我们知道,flask的url规则是可以添加变量部分的,这个参数变量是写在尖括号里的,比如:/item/<id>/,如果需要指出参数的类型要符合<converter:vai ...
- gganimate|创建可视化动图,让你的图表会说话
本文首发于“生信补给站”公众号,https://mp.weixin.qq.com/s/kKQ2670FBiDqVCMuLBL9NQ 更多关于R语言,ggplot2绘图,生信分析的内容,敬请关注小号. ...