React中文文档之introducing JSX
2016-11-17 22:47
225 查看
introducing JSX
思考下面的变量声明:
这个有趣的标签解析,既不是字符串,也不是HTMl。
它叫做 'JSX',它是对js的一个解析扩展。在React中,我们推荐使用它来描述UI应该是什么样子。JSX可能看着像一个模板语言,但是它具有js的所有能力。
JSX产生 React元素。在下一章节,我们将探讨将它们渲染为DOM。接下来,你可以找到JSX必备的基础知识来开始学习:
embedding expressions in JSX - 在JSX中嵌入表达式
通过将代码包装在 '{}' 中,可以在JSX中,嵌入任何的js表达式
例如,'2 + 2','user.name','formatName(user)' 都是有效的表达式:
我们将JSX代码包裹在 '()' 内,并且为了可读性分割为多行。这也避免了js语法的 '自动插入分号' 的陷阱(如果行尾未添加 ';',js会自动来判断哪里需要添加 ';')。
JSX is an Expression Too - JSX 也是一个表达式
Specifying Attributes with JSX - 使用JSX指定属性
你可以使用引号来指定文本字符串作为属性:
你也可以使用 '{}' 在属性中嵌入js表单式:
Specifying Children with JSX - 使用JSX指定子
如果一个标签式空的,可以通过 '/>' 立刻结束,就像 XML(其实就是单标签形式,html的块标签内如果没内容,在JSX中也可以这么结束):
JSX标签可以包含子:
警告:
因为JSX更近似js,而不是HTML,React DOM使用 '驼峰式' 属性命名,替代 HTML 属性命名。例如:
class是 className,tabindex 是 tabIndex。(js语法中:class和for都是保留字,应该使用 className, htmlFor)
JSX Prevents Injection Attacks - JSX阻止注入攻击
在JSX中嵌入用户输入是安全的:
默认情况下,在渲染前,React DOM 对插入到 JSX 中的任何值都进行了过滤
JSX Represents Objects - JSX代表对象
Babel编译JSX为 React.createElement() 调用
下面的2个例子是等价的:
React.createElement() 执行了一些检查来帮助我们写出没有bug的代码,但是最关键的是,它创建了如下的一个对象:
这些对象称作 'React elements',你可以认为它们是你想在屏幕上看到的内容的描述。React读取这些对象,并使用它们来构建DOM以及保持更新。
提示:
我们推荐针对你的编辑器查找一个 'Babel' 语法格式解析,这样 ES6 和 JSX 代码会高亮显示。
思考下面的变量声明:
const element = <h1>Hello world!</h1>;
这个有趣的标签解析,既不是字符串,也不是HTMl。
它叫做 'JSX',它是对js的一个解析扩展。在React中,我们推荐使用它来描述UI应该是什么样子。JSX可能看着像一个模板语言,但是它具有js的所有能力。
JSX产生 React元素。在下一章节,我们将探讨将它们渲染为DOM。接下来,你可以找到JSX必备的基础知识来开始学习:
embedding expressions in JSX - 在JSX中嵌入表达式
通过将代码包装在 '{}' 中,可以在JSX中,嵌入任何的js表达式
例如,'2 + 2','user.name','formatName(user)' 都是有效的表达式:
function formatName(user) { return user.firstName + ' ' + user.lastName; } const user = { firstName: 'xuemin', lastName: 'dong' }; const element = ( <h1> hello, {formatName(user)}! </h1> ); ReactDOM.rend( element, document.getElementById('root') );
我们将JSX代码包裹在 '()' 内,并且为了可读性分割为多行。这也避免了js语法的 '自动插入分号' 的陷阱(如果行尾未添加 ';',js会自动来判断哪里需要添加 ';')。
JSX is an Expression Too - JSX 也是一个表达式
编译后,JSX表单式变为正常的js对象。 这意味着,你可以在 'if' 语句和'for' 循环中,使用JSX,将它分配给变量,作为参数接收,或者从函数中返回它。 function getGreeting(user) { if (user) { return <h1>Hello, {formatName(user)!}</h1>; } else { return <h1>Hello, Stranger</h1> } }
Specifying Attributes with JSX - 使用JSX指定属性
你可以使用引号来指定文本字符串作为属性:
const element = <div tabIndex="0"></div>;
你也可以使用 '{}' 在属性中嵌入js表单式:
const element = <img src={user.avatarUrl}></img>;
Specifying Children with JSX - 使用JSX指定子
如果一个标签式空的,可以通过 '/>' 立刻结束,就像 XML(其实就是单标签形式,html的块标签内如果没内容,在JSX中也可以这么结束):
const element = <img src={user.avatarUrl} />
JSX标签可以包含子:
const element = ( // JSX包含多行,就得需要使用 '()' <div> <h1>Hello!</h1> <h2>Good to see you here.</h2> </div> );
警告:
因为JSX更近似js,而不是HTML,React DOM使用 '驼峰式' 属性命名,替代 HTML 属性命名。例如:
class是 className,tabindex 是 tabIndex。(js语法中:class和for都是保留字,应该使用 className, htmlFor)
JSX Prevents Injection Attacks - JSX阻止注入攻击
在JSX中嵌入用户输入是安全的:
const title = response.name; const element = <h1>{title}</h1>; // 这是安全的
默认情况下,在渲染前,React DOM 对插入到 JSX 中的任何值都进行了过滤
JSX Represents Objects - JSX代表对象
Babel编译JSX为 React.createElement() 调用
下面的2个例子是等价的:
const element = ( <h1 className="greeting"> hello world! </h1> ); --- 等价于 --- const element = React.createElement( 'h1', {className: 'greeting'}, 'hello world!' );
React.createElement() 执行了一些检查来帮助我们写出没有bug的代码,但是最关键的是,它创建了如下的一个对象:
const element = { type: 'h1', props: { className: 'greeting', children: 'hello, world!' } }
这些对象称作 'React elements',你可以认为它们是你想在屏幕上看到的内容的描述。React读取这些对象,并使用它们来构建DOM以及保持更新。
提示:
我们推荐针对你的编辑器查找一个 'Babel' 语法格式解析,这样 ES6 和 JSX 代码会高亮显示。
相关文章推荐
- React中文教程翻译文档 - JSX Syntax(语法)
- React中文文档之Lifting State Up
- React-navigation 官方文档中文翻译(三) Configuring the Header
- React中文文档之Composition vs Inheritance
- React中文文档之Thinking in React
- React中文教程翻译文档 - Common Questions 常见问题
- React中文文档之Components and Props
- React文档(三)介绍JSX
- React-navigation 官方文档中文翻译(一) Hello Mobile Navigation
- React文档翻译系列(三)JSX简介
- React-bootstrap 中文文档
- React文档(二十)不使用JSX
- React初学者教程(说明文档)--中文翻译
- React中文文档之Hello world翻译
- React-navigation 官方文档中文翻译(二) Nesting Navigators
- React中文文档之Rendering Elements
- React 官方文档初释义 —— JSX(一)
- React中文文档之Components and Props
- React中文文档之State and Lifecycle
- React中文文档之Handling Events