1、JSX简介:
- 什么是JSX?
- JSX是javascript的语法扩展。
- JSX特点:
- 具有javascript全部功能
- 可以很好的描述UI应该呈现出它应有的本质形式
- 可以使React显示更多有用的错误和警告信息
2、在JSX中嵌入表达式
- 嵌入变量
1234567const name = 'Josh Peres'const element = <h1>Hello, { name }</h1>ReactDOM.render(element,document.getElementById('root')) - 嵌入表达式
123456// 嵌入表达式const element = <h1>1 + 2 = { 1 + 2 }</h1>ReactDOM.render(element,document.getElementById('root1')) - 嵌入函数
12345678910111213141516171819// 嵌入函数function formatName (user) {return user.firstName + ' ' + user.lastName}const user = {firstName: 'Harper',lastName: 'Perez'}const element = (<h1>Hello, { formatName(user) }</h1>)ReactDOM.render(element,document.getElementById('root2'))
3、JSX也是一个表达式
-
将JSX赋值给变量
-
将JSX当参数传入
-
从函数中返回JSX
1234567891011// JSX也是一个表达式function getGreeting (user) {if (user) {return <h1>Hello, { formatName(user) }!</h1>}return <h1>Hello, Stranger.</h1>}ReactDOM.render(getGreeting(),document.getElementById('root3'))
4、JSX特定属性
注:React DOM 使用 camelCase
(小驼峰命名)来定义属性的名称
-
1const element = <div tabIndex="0"></div>
- 使用大括号在属性值中插入Javascript表达式
1const element = <img src={user.avatarUrl}></img>
5、使用 JSX 指定子元素
-
标签里面没有内容,可以使用
/>
来闭合标签1const element = <img src={user.avatarUrl} /> -
123456const element = (<div><h1>Hello!</h1><h2>Good to see you here.</h2></div>)
6、JSX 防止注入攻击
-
React DOM 在渲染所有输入内容之前,默认会进行转义,所有的内容在渲染之前都被转换成了字符串。这样可以有效地防止 XSS(cross-site-scripting, 跨站脚本)攻击。
123const title = response.potentiallyMaliciousInput;// 直接使用是安全的:const element = <h1>{title}</h1>
7、JSX 表示对象
-
Babel 会把 JSX 转译成一个名为
React.createElement()
函数调用。12345const element = (<h1 className="greeting">Hello, world!</h1>)123456// 等效于const element = React.createElement('h1',{className: 'greeting'},'Hello, world!') - 12345678// 注意:这是简化过的结构const element = {type: 'h1',props: {className: 'greeting',children: 'Hello, world!'}}