JSX是一种JavaScript的语法扩展,首先运用于
React中,其格式比较像是模版语言,但事实上完全是在
JavaScript内部实现的。元素是构成React应用的最小单位,JSX就是用来声明React当中的元素。React主要使用JSX来描述用户界面,但React并不强制要求使用JSX,而JSX也在React之外的框架得到了广泛的支持,包括
Vue.js,
Solid等。
React认为渲染逻辑本质上与其他
UI逻辑内在耦合,比如,在
UI中需要绑定处理事件、在某些时刻状态发生变化时需要通知到UI,以及需要在UI中展示准备好的数据。
因为JSX的特性更接近JavaScript而不是HTML,所以React DOM使用camelCase(小驼峰)命名来定义属性的名称,而不是使用HTML的属性名称。例如:class变成了className,而tableindex则对应着tableIndex。
在JSX中可任意使用JavaScript
表达式,但要包含在大括号里,例如:2 + 2,user.firstName,以及formatName(user)都是可以使用的。
React DOM在渲染之前默认会
过滤所有传入的值。它可以确保应用不会被注入攻击。所有的内容在渲染之前都被转换成了字符串。这样可以有效地防止
XSS(跨站脚本攻击)。
这样的对象被称为“React 元素”。它代表所有显示在屏幕上的东西。React通过读取这些对象来构建
DOM并保持数据内容一致。