博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
02. react 初次见面---JSX简介
阅读量:6800 次
发布时间:2019-06-26

本文共 2208 字,大约阅读时间需要 7 分钟。

hot3.png

1、JSX简介

我们来观察一下声明的这个变量:

const element = 

Hello, world!

;

这种看起来可能有些奇怪的标签语法既不是字符串也不是HTML.

它被称为 JSX, 一种 JavaScript 的语法扩展。 我们推荐在 React 中使用 JSX 来描述用户界面。JSX 乍看起来可能比较像是模版语言,但事实上它完全是在 JavaScript 内部实现的。

JSX 用来声明 React 当中的元素。在下一个章节里面我们会详细介绍元素是如何被渲染出来的,接下来呢,我们先来看看 JSX 的基本使用方法。

2、在 JSX 中使用表达式

你可以任意地在 JSX 当中使用 ,在 JSX 当中的表达式要包含在大括号里。

例如 2 + 2user.firstName, 以及 formatName(user) 都是可以使用的。

//js方法function formatName(user) {  return user.firstName + ' ' + user.lastName;}//对象const user = {  firstName: 'Harper',  lastName: 'Perez'};//混合const element = (  

Hello, {formatName(user)}!

);//对页面进行渲染ReactDOM.render( element, document.getElementById('root'));

在 CodePen 上试试。

我们书写 JSX 的时候一般都会带上换行和缩进,这样可以增强代码的可读性。与此同时,我们同样推荐在 JSX 代码的外面扩上一个小括号,这样可以防止  的bug.

3、JSX 本身其实也是一种表达式

在编译之后呢,JSX 其实会被转化为普通的 JavaScript 对象。

这也就意味着,你其实可以在 if 或者 for 语句里使用 JSX,将它赋值给变量,当作参数传入,作为返回值都可以:

function getGreeting(user) {  if (user) {    return 

Hello, {formatName(user)}!

; } return

Hello, Stranger.

;}

4、JSX 属性

你可以使用引号来定义以字符串为值的属性:

const element = 
;

也可以使用大括号来定义以 JavaScript 表达式为值的属性:

const element = ;

切记你使用了大括号包裹的 JavaScript 表达式时就不要再到外面套引号了。JSX 会将引号当中的内容识别为字符串而不是表达式。

5、JSX 嵌套

如果 JSX 标签是闭合式的,那么你需要在结尾处用 />, 就好像 XML/HTML 一样:

const element = ;

JSX 标签同样可以相互嵌套:

const element = (  

Hello!

Good to see you here.

);

警告:

因为 JSX 的特性更接近 JavaScript 而不是 HTML , 所以 React DOM 使用 camelCase 小驼峰命名 来定义属性的名称,而不是使用 HTML 的属性名称。

例如,class 变成了 ,而 tabindex 则对应着 .

6、JSX 防注入攻击

你可以放心地在 JSX 当中使用用户输入:

const title = response.potentiallyMaliciousInput;// 直接使用是安全的:const element = 

{title}

;

React DOM 在渲染之前默认会  所有传入的值。它可以确保你的应用不会被注入攻击。所有的内容在渲染之前都被转换成了字符串。这样可以有效地防止  攻击。

7、JSX 代表 Objects

Babel 转译器会把 JSX 转换成一个名为 React.createElement() 的方法调用。

下面两种代码的作用是完全相同的

const element = (  

Hello, world!

);
const element = React.createElement(  'h1',  {className: 'greeting'},  'Hello, world!');

React.createElement() 这个方法首先会进行一些避免bug的检查,之后会返回一个类似下面例子的对象:

// 注意: 以下示例是简化过的(不代表在 React 源码中是这样)const element = {  type: 'h1',  props: {    className: 'greeting',    children: 'Hello, world'  }};

这样的对象被称为 “React 元素”。它代表所有你在屏幕上看到的东西。React 通过读取这些对象来构建 DOM 并保持数据内容一致。

我们将在下一个章节当中介绍更多有关 React 元素 是如何渲染成 DOM 的内容。

转载于:https://my.oschina.net/u/3563169/blog/1596480

你可能感兴趣的文章
7. 数据库函数
查看>>
win8 开发之旅(6) --五子棋游戏开发
查看>>
Python的win32serviceutil之疑似BUG
查看>>
动画绘制水波纹
查看>>
安装xenomai的记实
查看>>
梦幻星空动画
查看>>
用Easing函数实现碰撞效果
查看>>
Python简介
查看>>
泛函编程(13)-无穷数据流-Infinite Stream
查看>>
XML与HTML
查看>>
[Java 泥水匠] Java Components 之二:算法篇之项目实践中的位运算符(有你不懂的哦)...
查看>>
[android]android自动化测试十之单元测试实例
查看>>
Java SecurityManager
查看>>
谁说阿里云不能跑Oracle,让驻云架构师告诉你怎么办!
查看>>
[LeetCode]*84.Largest Rectangle in Histogram
查看>>
[华为机试练习题]8.汽水瓶
查看>>
PostgreSQL 某单机插入性能测试 1200万行/s, 4.2GB/s
查看>>
taskset - retrieve or set a process's CPU affinity (affect SYSTEMTAP TIME)
查看>>
坏消息:Flutter官方暂时不会开发热更新(Code push)了。
查看>>
webpack4.x实战四,js和css独立打包
查看>>