在前文中我们知道,在React JSX中是无法直接使用if条件语句的。不过,可以通过JSX函数表达式以变通的方式来使用。因为,JSX可以作为参数传入并嵌套在另一个JSX之中。为了更好地进行对比,我们再将【代码2-7】进一步做改写,具体代码实例如下:
【代码2-8】(详见源代码目录ch02-react-jsx-exp-func-plus.html文件)
关于【代码2-8】的说明:
-
第18~22行代码通过const运算符定义了一个常量对象(userinfo),并初始化了一组属性。
-
第24~26行代码定义了第一个函数(formatUserinfo),该函数返回了一个将常量对象(userinfo)进行组合后的字符串信息。
-
第28~34行代码定义了第二个函数(chooseUserinfo),该函数通过if条件语句判断传入的参数(ui)。若判断结果为“true”,则调用formatUserinfo()方法返回一个将常量对象(userinfo)进行组合后的字符串信息。若判断结果为“false”,则直接返回“Hello, userinfo is nothing(用户信息为空)”的提示信息。
-
在第39行代码定义的JSX中,通过带参数的函数表达式(chooseUserinfo(userinfo))方式获取了用户信息。
-
在第40行代码定义的JSX中,通过无参数的函数表达式(chooseUserinfo())方式获取了相应的信息。
测试网页的效果如图2.7所示。如图中的箭头所示,通过无参数的函数表达式(chooseUserinfo())方式获取了“Hello, userinfo is nothing(用户信息为空)”的提示信息。
图2.7 React JSX增强函数表达式
ZYn/1I8//0i8z1JvzRKQ97m6xQiwBnzY0Q/mjGRo9AhYyPFrP4uw6uoAULf5pTt2