React零基础入门02--JSX语法基础

简介: React零基础入门02--JSX语法基础

JSX语法简介
JSX是js的一个高级语法,在运行时通过Babel转换为低版本的代码,使用JSX语法的主要目的是为了编程的逻辑更清晰和快速,提升代码可读性和性能。

下图解释了JSX编译的过程

基本使用
新建一个01-HwlloWorld.html文件,内容如下,我们使用JSX语法在页面输出一句“Hello World”

<!DOCTYPE html>






















1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
获取元素,在body中添加一个id为app的div,使用原生js获取它,这个div是React渲染DOM的容器
//获取元素
const con=document.getElementById("app");

1
2
3
使用JSX语法创建虚拟DOM,
JSX语法的写法又像js又像html,它是是一个 JavaScript 的语法扩展,能帮我们很容易的操作DOM
// 创建虚拟DOM
const Vh1=

你好世界

1
2
3
使用ReactDOM.render()方法,将创建的虚拟DOM渲染到app中
ReactDOM.render()方法接收两个参数:要渲染的虚拟DOM和虚拟DOM渲染到哪个容器,我们将刚刚创建的Vh1渲染到app中
// 渲染
ReactDOM.render(Vh1,con);
1
2
用浏览器运行html文件,即可看到效果

多重嵌套
JSX语法规定:多重嵌套需要一个外部容器将嵌套元素包裹

开发时,我们很少只在页面输出一句话。大多时多个元素的嵌套,下面演示一下如何使用JSX渲染嵌套元素
我们想在页面输出一段文章和一个标题

<!DOCTYPE html>





















1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
解释一下上面的代码,h2是标题 p标签是段落,但是为什么外面加了
呢?

这是因为JSX的语法规定:在 ReactDOM.render()函数内插入的必须是一个整体

所以必须用一个外部容器将h2和p标签包裹起来

而className="box" 是给外面的容器div加了一个class名为box,便于我们去设置css样式。

当然你也可以用一个变量将虚拟DOM保存再插入ReactDOM.render()函数渲染也是一样的,这样代码看起来更简洁

你也可以继续添加其他元素,在这里就不再添加了,原理都是一样的。


1
2
3
4
5
6
7
8
9
打开浏览器运行一下,效果如下
运行效果图:


JSX语法中使用变量和表达式
JSX语法规定:在JSX中使用表达式时:变量和表达式都要写在{ }中

<!DOCTYPE html>






















1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
上面的代码中,书名bookName是一个变量,将其作为pb标签的文本内容,使用{}包起来,而下面的数的价格 {1003+2-60/6}则是一个计算表达式,也用{}括起来
注意:{}内只能放变量和表达式,不能放语句,如 if(...){..} for(...){...} 都是语句,不能放在JSX里面的{}里

使用浏览器运行结果如下


JSX中使用行内样式
JSX语法规定:JSX中通过对象的方式引入行内样式

接着说上面的案例,我们想给书名和价格加个css样式的话,就需要以对象字面量的方式加入
为了效果更好,我又添加了一个img标签作为书的封面
所有代码如下


<!DOCTYPE html>






















1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
解释一下上面的代码
nameStyle和priceStyle是书的标题和价格的样式,安照JSX的语法,必须是对象形式,且使用驼峰命名法

const nameStyle={
   backgroundColor:"#a7493f",
    color:"#1b1b1b",
    padding:"10px",
    margin:"15px",
    borderRadius:"2px",
    fontSize:"20px",
    color:"#fff"
};

const priceStyle={
    display:"block",
    color:"#e4393c",
    fontSize: "16px",
    padding:"10px",
};

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
在JSX语法中,设置行内样式通过style属性,其值是一个对象

{bookName}

中的nameStyle就是我们刚刚定义的对象样式变量,同样遵循JSX的语法规则,变量用{}括起

下面的

{bookName}

原理是一样的

ReactDOM.render(


{bookName}



春节特价只需要:{100*3+2-60/6} 元
,document.getElementById("app"))

1
2
3
4
5
6
7
这里需要注意的是,JSX语法中,单标签必须闭合
是不对的,应该加上/,写成 其他单标签也是如此写法

上面的代码运行结果如下:

JSX数组遍历
数组遍历应该是开发中最常用的,JSX中数组遍历使用ES6的新数组方法map()

先说一下map()方法

map可以简单的理解为映射,将原数组按照一定的规则映射到新的数组

map接收一个函数作为参数,该函数的有三个参数value,index,arr;依次为依次为当前的值、当前值的下标和原数组,其中index和arr是可选参数

原数组的每一项会依次执行该函数

如下面将a1数组双倍存入b1

let a1=[1,2,3];
let b1=[];
b1=a1.map((item)=>{
return item*2
});
console.log(b1);
2
4
6
1
2
3
4
5
6
7
8
9
上面的代码,map里面的参数函数,遍历原数组的每一项,将该项乘2后返回出去,返回的项组成一个新的数组。

当然也可以不对数组的值处理,直接输出也可以,比如接下来的遍历

我们定义一个数组,里面存放了几组对象,用来遍历生成一个ul标签

<!DOCTYPE html>

























1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
上面的代码中,在ul中通过map()方法遍历输出theArr的每一项,即value,创建li标签,另外li标签的 key属性是当前数组元素的下标,用来表示在内存中的唯一性

上面的代码运行结果如下

到这里,JSX的基础语法先告一段路,下面总结一下:

JSX中添加属性时,使用className代替class,像label中的for属性,使用htmlFor代替
JSX创建DOM的时候,所有的子节点必须有唯一的根元素进行包裹
JSX语法中,标签必须成对出现,如果是单标签,则必须自闭合
JSX中可以直接使用JS代码,直接在JSX中通过{ }中间写JS代码即可
在JSX中只能使用表达式,不能出现语句,变量和语句必须使用{}包裹才能在元素中做插值
在JSX语法中注释为{/注释的内容/}
const VDOm=(
{/我是对标题的注释/}

我是标题


)
相关文章
|
6月前
|
前端开发 JavaScript 开发者
React:JSX语法入门
React:JSX语法入门
83 0
|
3月前
|
XML JavaScript 前端开发
React Jsx语法入门
【8月更文挑战第13天】React Jsx语法入门
42 4
|
22天前
|
缓存 前端开发 JavaScript
React 参考手册
10月更文挑战第13天
17 0
|
6月前
|
前端开发 JavaScript 开发者
React中JSX语法入门
React中JSX语法入门
|
XML 前端开发 JavaScript
【React 入门系列 02】JSX 使用
JSX是JavaScript XML的简写,表示在JavaScript代码中写XML(HTML)格式代码。声明式语法更加直观、与HTML结构相同,提高开发效率。 为什么需要在JSX中嵌入JavaScript表达式? 这是由于通常情况下,一个前后端分离项目,前端获取到的数据都是通过AJAX异步请求的方式向后台服务发送请求获取,一般是保存在JavaScript对象中。页面需要根据这些数据对象进行动态展示,就需要在JSX中嵌套使用JavaScript代码。 JSX提供了{JavaScript表达式},大括号的方式在JSX代码中插入JavaScript表达式的方式。
|
前端开发 JavaScript
|
前端开发 JavaScript
react常用语法
react常用语法
53 0
|
XML 存储 前端开发
React系列教程(1)ReactJS快速入门
React系列教程(1)ReactJS快速入门
139 0
|
前端开发
react笔记之JSX的注意事项
react笔记之JSX的注意事项
86 0
|
前端开发
react笔记之JSX
react笔记之JSX
78 0