【译】快速起步-JSX简介
react version: 15.5.0
快速起步-JSX简介
思考这个变量申明:
const element = <h1>Hello, world!</h1>;
这个有趣的标签语法既不是字符串也不是HTML。
它被称之为 JSX,是 JavaScript 的语法扩展。我们建议使用它来定义React的UI展示。JSX 可能会让你想起模板语言,但它可以使用 JavaScript 的全部功能。
JSX 用于编写 React "elements"。在 下一节,我们将探索如何将它们渲染到DOM中。下面,我们来了解下 JSX 的基础知识。
在 JSX 中嵌入表达式
你可以在 JSX 中通过 {xxx} 来嵌入 JavaScript 表达式。
例如,2 + 2, user.firstName, 和 formatName(user) 都是合法的表达式:
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('root')
);
为了可读性,我们将 JSX 分割为多行。虽然这不是必须的,但在这样做的时候,我们建议将它放在 {} 中,以避免 自动补全分号。
JSX 也是一个表达式
编译之后,JSX表达式会变成常规的 JavaScript 对象。
这意味着你可以在 if 语句和 for 循环内部使用 JSX,也可以将其作为参数传递或用来作为返回值:
function getGreeting(user) {
if (user) {
return <h1>Hello, {formatName(user)}!</h1>;
}
return <h1>Hello, Stranger.</h1>;
}
JSX中指定属性
您可以使用引号将字符串文本指定为属性:
const element = <div tabIndex="0"></div>;
你也可以使用 {} 将 JavaScript 表达式作为属性:
const element = <img src={user.avatarUrl}></img>;
在属性中使用 JavaScript 表达式时,不要使用引号包裹大括号。否则,JSX会认为属性值是字符串而不是一个表达式。你可以对字符串使用双引号,对表达式使用花括号,但不能同时使用。
JSX中指定子集
如果是空标签,可以像XML那样使用自闭合标签 />:
const element = <img src={user.avatarUrl} />;
JSX 标签也可以包含子集:
const element = (
<div>
<h1>Hello!</h1>
<h2>Good to see you here.</h2>
</div>
);
警告:
由于 JSX 更趋近于 JavaScript 而不是 HTML,React DOM 使用
camelCase(小驼峰) 属性命名约定而不是HTML的属性名称。
JSX 防止注入攻击
在 JSX 中嵌入用户输入是安全的:
const title = response.potentiallyMaliciousInput;
// 安全的:
const element = <h1>{title}</h1>;
默认情况下,React DOM 会在渲染前使用 escapes 编码所有嵌入 JSX 的值。 因此它能确保您永远不会注入任何未明确写入应用程序的内容。所有内容都将在呈现前转换为字符串。这有助于防御 XSS (cross-site-scripting) 攻击。
JSX 代表对象
Babel 将 JSX 编译成 React.createElement() 调用。
这两个例子是等同的:
const element = (
<h1 className="greeting">
Hello, world!
</h1>
);
const element = React.createElement(
'h1',
{className: 'greeting'},
'Hello, world!'
);
React.createElement() 会执行一些检查来帮助您编写无误的代码,但基本上,它是创建如下的对象:
// 注意:以下是简单结构
const element = {
type: 'h1',
props: {
className: 'greeting',
children: 'Hello, world'
}
};
这些对象称之为 "React elements". 你可以将它们视为您想要在屏幕上看到的内容。React 会读取这些对象,并使用它们来构造DOM且保持为最新状态。
下一节我们将探索如何渲染 React elements 到DOM中。
提示:
我们建议为编辑器选择
Babel语法支持插件,以便ES6和JSX都能被高亮显示。
【译】快速起步-JSX简介的更多相关文章
- 【译】Android系统简介—— Activity
续上一篇,继续介绍Android系统.上一篇: [译]Android系统简介 本文主要介绍构建Android应用的一些主要概念: Activity Activity是应用程序中一个单独的有UI的页面( ...
- React基础篇 - 02.JSX 简介
JSX 简介 请观察下面的变量声明: const element = <h1>Hello, world!</h1>; 这种看起来可能有些奇怪的标签语法既不是字符串也不是HTML ...
- JSX 简介
JSX 简介 考虑如下变量声明: const element = <h1>Hello, world!</h1>; 这个有趣的标签语法既不是字符串也不是HTML. 它被称为JSX ...
- Kafka 快速起步(作者:杜亦舒)
Kafka 快速起步 原创 2017-01-05 杜亦舒 性能与架构 主要内容:1. kafka 安装.启动2. 消息的 生产.消费3. 配置启动集群4. 集群下的容错测试5. 从文件中导入数据,并导 ...
- JUnit三分钟教程 ---- 快速起步
JUnit三分钟教程 ---- 快速起步 摘自http://lavasoft.blog.51cto.com/62575/65625/ JUnit是个好东西,做大点的项目离不开这东西,实际中用的时候也因 ...
- React文档翻译系列(三)JSX简介
# React文档翻译系列(三)JSX简介 先来看一下下面的变量声明: ``` const element = Hello world! ``` 这种有趣的标签语法既不是字符串也不是HTML. 这种形 ...
- Kafka 快速起步
Kafka 快速起步 原创 2017-01-05 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 主要内容:1. kafka 安装.启动2. 消息的 ...
- React学习笔记 - JSX简介
React Learn Note 2 React学习笔记(二) 标签(空格分隔): React JavaScript 一.JSX简介 像const element = <h1>Hello ...
- jsx简介
react文档笔记 jsx简介 jsx是一种javascript的语法扩展,jsx用来声明React当中的元素. 在jsx中使用表达式 jsx当中的表达式要包含在大括号里.例如2+2,user.fir ...
随机推荐
- unresolved external symbol boost::throw_exception
使用boost库,VS生成的时候一直报错, error LNK2019: 无法解析的外部符号 "void __cdecl boost::throw_exception(class std:: ...
- JMeter—断言(十一)
参考<全栈性能测试修炼宝典JMeter实战>第六章 JMeter 元件详解中第六节断言断言用来对服务器的响应数据做验证,常用的断言是响应断言,支持正则表达式. 一.BeanShell As ...
- 开发测试技巧|辅助开发调试:goolge浏览器利用F12在控制台输入脚本实现表单自动填充
一个开发测试技巧的指引和截图,利用google浏览器的F12调试和Console执行,注入JavaScript脚本实现表单的自动填充和测试. 原文链接: http://www.lookdaima.co ...
- 自定义mysql类用于快速执行数据库查询以及将查询结果转为json文件
由于每次连接数据库进行查询比较麻烦,偶尔还需要将查询结果转为json格式的文件, 因此暂时定义一个mysql的类,将这些常用的方法进行封装,便于直接调用(代码如下,个人用,没写什么注释). 注:导入了 ...
- Kali下Ettercap 使用教程+DNS欺骗攻击
一.Ettercap 使用教程 EtterCap是一个基于ARP地址欺骗方式的网络嗅探工具.它具有动态连接嗅探.动态内容过滤和许多其他有趣的技巧.它支持对许多协议的主动和被动分析,并包含许多用于网络和 ...
- golang文件相对路径问题
目录结构: --simple --data --data.json --search --feed.go 具体代码: const dataFile = "../data/data.json& ...
- 【错误记录】PowerShell 超级无语的语法错误(令人怀疑人生)
曾经做过测试,本文是本章优秀测试人员的精神,必须定位到原因,不然吃不下饭.其实可以很容易绕过这种问题. 环境: PowerShell 5.1.16299.64 Windows 10 现有代码如下: # ...
- 描述各自页面的 page
一个小程序页面由四个文件组成(注意:为了方便开发者减少配置项,描述页面的四个文件必须具有相同的路径与文件名).分别是: 页面 Page(JS文件) Page(Object) 函数用来注册一个页面.接受 ...
- SpringMVC---applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- win10搭建ftp服务器的操作方法【图文教程】
我们知道FTP是TCP/IP网络上两台计算机传送文件的协议,使得主机间可以共享文件.对于win10版本的ftp服务器搭建方法可能有部分用户还不是很清楚,下面这篇文章就是关于win10搭建ftp服务器的 ...