JSX简单说明
JSX使用说明
看下面的代码段:
1 | const element = <h1>Hello, world!</h1>; |
这就是JSX,它既不是字符串也不是HTML,它是javascript的语言扩展。在React中推荐使用JSX来描述一个组件。虽然它看起来和模板语言有点相似,但是他具有js的所有功能。
下面是JSX的一些基本知识。
在JSX中使用表达式
在JSX中可以使用js表达式,需要用大括号把js表达式包起来。
比如,2+2
、user.name
、format(name)
等有效的js表达式:
1 | function formatName(user) { |
JSX是一个js表达式
JSX表达式编译之后是一个普通的js对象。
1 | function getGreeting(user) { |
指定JSX对象属性
可以使用字符串直接包起来:
1 | const element = <div tabIndex="0"></div>; |
也可以用大括号包裹js表达式:
1 | const element = <img src={user.avatarUrl}></img>; |
这么设置属性的时候不能用双引号把大括号包起来。
注意:
由于JSX语法更接近js语法,所以html元素的属性名转化为驼峰命名法表示。比如,
class
变为className
,tabindex
变为tabIndex
.
在JSX中指定子元素
对于没有text的标签直接用/>
结束一个节点。
对于开放的标签元素,JSX可以设置子元素。
1 | const element = ( |
JSX放xss注入攻击
下面是用户输入安全的写法:
1 | const title = response.potentiallyMaliciousInput; |
React DOM引擎会在渲染把嵌入的数据前进行转义。因此,可以防止注入不确定的XSS数据。所有的数据在渲染之前都会转为字符串。
JSX对象表示
Babel会把JSX表达式编译为React.createElement()
格式代码。
下面两段代码表达的意思是一样的:
1 | const element = ( |
1 | const element = React.createElement( |
React.createElement()
执行的时候会进行一些代码语法检查来减少一些bug,实际上它会生成这么一个对象:
1 | const element = { |
这些对象叫“React elements”.可以把它们想象成你在屏幕上看到的显示内容。React读取这些对象然后渲染浏览器并维护对象的状态。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 编程私厨!