![Taro多端开发权威指南:小程序、H5与App高效开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/719/38209719/b_38209719.jpg)
2.1 JSX
2.1.1 JSX简介
JSX是JavaScript XML的缩写,是一种用来描述UI的JavaScript语法糖(Syntactic Sugar),Taro支持使用该语法来描述组件的UI表现。初学JSX,你可能会抱怨该语法的零散与随意,无法理解在JavaScript代码中直接书写HTML代码。如果你此前使用原生JavaScript或jQuery开发过大型应用,则你一定会抱怨代码耦合度过高、代码可维护性差、团队协同效率低,而正确使用JSX能很好地解决这些问题。初学时,你所谓的这些缺点正是它的优点,写法随意,可读性更好,更有利于组件封装与复用,特别是结合Hooks使用,可以轻松做到状态与视图解耦合,从而使组件复用“更上一层楼”。
2.1.2 JSX语法
1.基础语法
JSX通俗理解就是支持在JavaScript代码中书写HTML代码,将JavaScript交互操作与HTML界面定义完美结合。我们来看使用JSX的一段简单的代码:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_43_1.jpg?sign=1739203750-rwJ1tkoHveCLWPAJIRhFqi7p3paE1OyN-0-b6b6c81f6dece7e3c51c868264a2e4f0)
通过以上代码,我们惊奇地发现,可以将类似HTML代码片段赋值给一个变量,这种语法就是JSX。
注:此处列举的View是Taro提供的视图组件,暂且可以将该组件理解为HTML中的div元素。关于组件的具体内容请查看下节内容。
2.值渲染与计算
既然是JavaScript与HTML的完美结合,也就是说,我们还可以在类似HTML代码片段中使用JavaScript变量或执行运算等,在HTML中使用JavaScript变量的示例如下:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_44_1.jpg?sign=1739203750-VQSSsZcetNpPku3NNL8SKMDH6TOZpoh5-0-204a5efb6cabbcfa62c166b8d38deddd)
在HTML中执行运算:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_44_2.jpg?sign=1739203750-W4z80nVqjUGcVzaX0TJ8g0UN4lAb16Oy-0-1ef4c204097b41171104144d41e79bcf)
通过以上两个实例不难发现,在类似HTML代码片段中使用JavaScript,只需使用{}操作符即可。可以理解为{}中的内容是需要交给JavaScript去计算并输出最终结果的。
3.属性
我们在编写HTML代码时,经常会在标签中定义很多属性,例如:
· class,指定类名。
· style,定义标签样式。
· ……
在JSX语法中同样可以定义属性,但值得一提的是,class等众多DOM属性在JavaScript中是关键字或保留字,所以不能使用。例如,在书写JSX时需要用className代替class,因为class在JavaScript中为关键字:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_44_3.jpg?sign=1739203750-HGYQTG2jQSI1O1N0OEnS5TTiKcta40lZ-0-6d1253425cc7ac08a2e671495c7358c9)
4.条件渲染
有时组件UI需要根据特定条件渲染特定内容,例如定义了一个变量flag,当变量为true时,页面显示“真”;当变量为false时,页面显示“假”:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_45_1.jpg?sign=1739203750-KDGJgut5FHoWpO6EIipXna5Tc1ZhWd8k-0-1df1d8c7b1b3d2648b12b52420c027fe)
5.列表渲染
使用诸如数组结构数据时,需要遍历数据计算的最终UI结果。例如定义了一个数组变量fruits,数组中包含apple、peach、pear,遍历该数组并返回结果:
![](https://epubservercos.yuewen.com/D79B16/20118172101010406/epubprivate/OEBPS/Images/40906_45_2.jpg?sign=1739203750-yLrKYu33hlYydpEKJQy3QFxxv3WBSTF7-0-035e568ee362169d41af1fc298214624)
注:列表渲染一定要在生成的每一项中都添加唯一的key。